2
ように私はLIKE
が私のテーブルには、col1, col2, col3
列がありhere.は、複数のORを組み合わせるとMySQL
から内部IN
句で使用することができないことを理解しています。
LIKE演算子を使用して複数の列に複数の値を見つける方法を教えてください。 は、現在、私のクエリは次のとおりです。
SELECT col1, col2, col3
FROM table_name
WHERE
(
Col1 = '38'
OR Col1 LIKE '%,38'
OR Col1 LIKE '%,38,%'
OR Col1 LIKE '38,%'
)
OR
(
col2 = '38'
OR col2 LIKE '%,38'
OR col2 LIKE '%,38,%'
OR col2 LIKE '38,%'
)
OR
(
col3 = '38'
OR col3 LIKE '%,38'
OR col3 LIKE '%,38,%'
OR col3 LIKE '38,%'
)
は方法がより速く/それが賢く/短くありませんか?ありがとうございます!
はいだろう。データを訂正し、複数の値を同じ列に格納しないようにしてください。そうすれば、カンマ区切りの値から構文解析する必要がなくなります。第一にテーブルを適切に定義する時間を費やさないという愚かな決断の問題は、必要なときにデータを取得するのが100倍になるということです。それから、WHERE(col1 = '38' or col2 = '38' or col3 = '38') 'になります。 –
私はあなたに同意する、テーブルは正規化する必要があります。しかし、今のところ、私はこのレガシーフォーマットにとどまっていなければなりません。 –