1

「X1、X2、X3、X4、X5」のような文字列(文字列のコンマ部分)を持つフィールドがあります。MySQLテーブルの例を見てみましょう-

id FIELD1
1 X1,X3
2 X1,X3,X4
3 X2,X3,X4
4 X2,X4
5 X1,X3,X4,X5,X6

Q = "X1、X3、X4、X5" とする

次に、FIELD1 値のすべての文字が Q に含まれる行を取得するクエリは何ですか。Q は、そのような種類の文字 (X1、X2 ..) が 8 つしかなく、文字列内の文字が繰り返されないようなものです。

Select id FIELD WHERE "...Some regex on characters of Q...." 

つまり、行 1、2 は Q に存在する X1、X3、X4 として返されます。X2、X6 が Q に存在しないため、行 3、4、5 は返されません。

どうもありがとう

4

1 に答える 1

0

juergen dが私の前に言ったように、あなたのDB構造に欠陥があります。

この構造を使用している場合、取得する醜いSQLクエリは次のとおりです。

SELECT id FROM Crooked_Table WHERE (FIELD1 LIKE '%X1%' OR FIELD1 LIKE '%X3%' OR FIELD1 LIKE '%X4%' OR FIELD1 LIKE '%X5%') AND NOT (FIELD1 LIKE '%X2%' OR FIELD1 LIKE '%X6%')

また、クエリで可能なすべてのカンマ区切り値をカバーする必要があります。そうしないと、機能しません。

于 2012-08-08T11:35:07.060 に答える