我有以下命名颜色在我的MySQL表列值:1; 2; 3; 11; 12的MySQL选择使用REGEXP
id | color
1 | 1;2
2 | 2;11
3 | 1;3
4 | 12
我想用REGEXP,只选择具有该表的行颜色1.
当我使用简单的表达式
color REGEXP '1'
它也选择具有值11或12,而我寻找那些只有值1行。所以当我使用上面的表达式时,它显示了上面示例中所示的所有4行,因为我希望它向我显示仅带有ID 1和3的行。
我有以下命名颜色在我的MySQL表列值:1; 2; 3; 11; 12的MySQL选择使用REGEXP
id | color
1 | 1;2
2 | 2;11
3 | 1;3
4 | 12
我想用REGEXP,只选择具有该表的行颜色1.
当我使用简单的表达式
color REGEXP '1'
它也选择具有值11或12,而我寻找那些只有值1行。所以当我使用上面的表达式时,它显示了上面示例中所示的所有4行,因为我希望它向我显示仅带有ID 1和3的行。
您需要to use word-delimiters on either side of the 1将其隔离:
color REGEXP '[[:<:]]1[[:>:]]'
这很好用!非常感谢 –
你可以尝试像
REGEXP '^1;|;1;|;1$'
如果我没看错,这将无论是在开始一个分号或1两间semicola,或者分号后一个1找个1。这应该是很重要的。
您的数据库违反了第一范式。您正在一列中保存多个值(颜色)。请规范化您的数据库。 – Jacob
我认为这不是重点。 –