MySQL INSTR-匹配精确子字符串
我有一个带有列的表,该列以下面的方式存储数据MySQL INSTR-匹配精确子字符串,mysql,sql,string,Mysql,Sql,String,我有一个带有列的表,该列以下面的方式存储数据 | column1 | +----------------+ | [112,114] | | [112,115] | | [112,114] | | [] | | [112] | | [] | | [116] | | [114,115,116] | 我希望能够选择该表中的记录,其中一条记录可能有一个或多个逗号分隔的数字存
| column1 |
+----------------+
| [112,114] |
| [112,115] |
| [112,114] |
| [] |
| [112] |
| [] |
| [116] |
| [114,115,116] |
我希望能够选择该表中的记录,其中一条记录可能有一个或多个逗号分隔的数字存储在column1的字符串中
WHERE FIND_IN_SET('114', column1)
OR FIND_IN_SET('112', column1)
这不管用
工作,但也会给我结果,如果它是
INSTR(d.villa_collections, "11") > 0
我应该如何以一种有效的方式进行这项工作,以使我能够匹配所需的记录?好的,您可以使用REGEXP:
WHERE column1 REGEXP '[[:<:]]123[[:>:]]'
WHERE column1 REGEXP'[[:::]]
如果前后有单词边界,则匹配123
SELECT '[112,114]' REGEXP '[[:<:]]112[[:>:]]'; -- 1
SELECT '[112,114]' REGEXP '[[:<:]]11[[:>:]]'; -- 0
SELECT '[112]' REGEXP '[[:<:]]112[[:>:]]'; -- 1
SELECT '[11]' REGEXP '[[:<:]]112[[:>:]]'; -- 0
选择“[112114]”REGEXP“[[::]]”;--1.
选择“[112114]”REGEXP“[[::]]”;--0
选择“[112]”REGEXP“[[::]]”;--1.
选择“[11]”REGEXP“[[::]]”;--0
您可以使用REGEXP:
WHERE column1 REGEXP '[[:<:]]123[[:>:]]'
WHERE column1 REGEXP'[[:::]]
如果前后有单词边界,则匹配123
SELECT '[112,114]' REGEXP '[[:<:]]112[[:>:]]'; -- 1
SELECT '[112,114]' REGEXP '[[:<:]]11[[:>:]]'; -- 0
SELECT '[112]' REGEXP '[[:<:]]112[[:>:]]'; -- 1
SELECT '[11]' REGEXP '[[:<:]]112[[:>:]]'; -- 0
选择“[112114]”REGEXP“[[::]]”;--1.
选择“[112114]”REGEXP“[[::]]”;--0
选择“[112]”REGEXP“[[::]]”;--1.
选择“[11]”REGEXP“[[::]]”;--0
您可以使用方括号并使用在集合中查找()
:
您可以使用方括号并使用在集合中查找()
:
您使用的是什么版本的MySQL?您可以访问JSON函数吗?您使用的是什么版本的MySQL?您有权访问JSON函数吗?