2014-01-29 41 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最底部。