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是这样的,只有8个字符(X1,X2..),并且字符串中的字符不重复。

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

换句话说,它应该返回第 1、2 行,因为 X1、X3、X4 出现在 Q 中。它不应该返回第 3、4、5 行,因为 X2、X6 不出现在 Q 中。

非常感谢

4

1 回答 1

0

正如 juergen d 在我之前所说,您的数据库结构有问题。

如果你使用这种结构,你会得到如下丑陋的 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 回答