2014-01-29 82 views
0

我有一個varchar字段,它包含一個整數數組。對整數數組的基本mysql regexp

例如:

Row1: [2] 
Row2: [1,8,346] 
Row3: [10,54,245] 
Row4: [4,25,3,7,46,14] 

我需要能夠得到有選擇的ID的一個實例的所有行。 有點像,如果我可以使用IN函數的反函數...

SELECT * FROM table WHERE field IN (4) 

雖然IN功能的顛倒輸入/輸出...

要嘗試和澄清: 使用上述號碼設置爲行。 我需要能夠在varchar數字組中獲得ID爲1的所有行。 我是想看起來像:

SELECT * FROM table WHERE field REGEXP '(1)'; 

當我執行查詢ID 1,結果集應該只有2行,而不是(在設定10)第3行

建議? TIA

+0

因此,給定一個ID 4,你想要varchar字段中有4個的所有行嗎?或者給定一個varchar字段(比如'[1,10]'),你想要所有ID爲1或10的行?哪一個?在你的例子「SELECT * FROM table WHERE field IN(4)」中你想要的輸出是什麼? –

+0

如果ID是1,則不應選擇包含10(但不是1)的行。我是否正確回答你的問題? – user2977468

+0

@ user2977468這不是我的意思,雖然我看到我寫了它容易混淆。但是,我明白您的更新問題的含義,謝謝。 –

回答

1

我想你可以嘗試像

SELECT * FROM table WHERE field REGEXP '[[:<:]]1[[:>:]]'; 

[[:<:]][[:>:]]匹配字邊界,這意味着它不會匹配 '21' 1或 '10' 1,但匹配整個單詞1.

從MySQL文檔他們解釋[[:<:]][[:>:]]this page最底部。