2012-08-08 48 views
1

我有一個有「X1,X2,X3,X4,X5」字符串(逗號部分字符串)的字段。 讓我們例如MySQL的表 -MySQL Tricky正則表達式

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,存在於Q. X4它不應該返回行3,4,5作爲X2,X6不存在Q中。

謝謝你這麼多

+1

您的數據庫結構違反了第一條規範化規則。你最好重新設計你的數據庫。 – 2012-08-08 09:47:52

+0

數據庫已經存在,所以我現在不能改變它:(你能告訴我如何得到結果嗎? – 2012-08-08 09:56:00

+0

我完全同意@juergend,你應該正確使用數據庫,而不是搜索一半的解決方案 – 2012-08-08 09:58:33

回答

0

正如克林斯曼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%') 

你還需要支付查詢中的所有可能的逗號分隔值,否則贏了沒有工作。

+0

謝謝,Uri,它工作。 – 2012-08-08 16:26:51