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函数吗?