我的表中包含一些列; - 分隔的数字如下:
1;2;43;22;20;12
等等。也可能此列中只有1个数字,如110
,或2个数字,例如110;143
我想在此列中选择包含特定数字的行。该数字位于变量$ search_var中。 假设我需要在我的专栏中搜索数字1。如果我使用像这样的select语句:
"SELECT * FROM Table WHERE ids LIKE '%".$search_var."%'"
我得到的所有结果都包含'1'而不仅仅是'1',所以我也得到11,14,110,1999等。 我想我需要使用某种正则表达式语句,但我迷失在这里......谁可以帮忙?
答案 0 :(得分:2)
你可能不需要这个
的正则表达式Set @YourNUmber := 110;
SELECT *
FROM Table
WHERE ';' + ids + ';' LIKE '%;'+ @yourNumber + ';%'
这可以保证所有数字始终;
。
这是针对SQL Server格式化的。如果您使用其他东西,变量语法和通配符可能会有所不同。
编辑:
感谢@FélixGagnon-Grenier的建议。我认为这两者中的任何一个都可行。请参阅此处查看SQL Fiddle example
SELECT *
FROM T
WHERE concat(';',ids,';') LIKE concat('%;', @YourNumber , ';%');
SELECT *
FROM T
WHERE LOCATE(concat(';', @YourNumber , ';'),concat(';',ids,';'))>0
答案 1 :(得分:0)
如果您使用的是SQL Server,请尝试使用此解决方案。这将搜索相邻字符不是数字的数字:
SELECT * FROM Table WHERE ids LIKE '%[^0-9]".$search_var."[^0-9]%'