MYSQL:作为整数数组在字符串中搜索

MYSQL:作为整数数组在字符串中搜索,mysql,sql,string,implode,Mysql,Sql,String,Implode,我有一个名为authors的字段,它是一个存储作者ID的varchar(我知道将ID保存为varchar是错误的!!) 我想在此字段中搜索int,例如: SELECT * FROM table WHERE 3 IN CONVERT(SUBSTRING_INDEX(`authorid`,',',-1),UNSIGNED INTEGER) 其中authorid值为“3,4,5” 有可能吗,我怎么做?使用MySQL函数 试试这个 SELECT FIND_IN_SET('3',authorid);

我有一个名为
authors
的字段,它是一个存储作者ID的varchar(我知道将ID保存为varchar是错误的!!) 我想在此字段中搜索int,例如:

SELECT * FROM table WHERE 3 IN CONVERT(SUBSTRING_INDEX(`authorid`,',',-1),UNSIGNED INTEGER)
其中
authorid
值为“3,4,5”

有可能吗,我怎么做?

使用MySQL函数

试试这个

SELECT FIND_IN_SET('3',authorid);

希望这对您有用。

如果遇到这个问题,PravinS的解决方案在短期内可能是最好的

在SQL中分割数字是可能的,但不值得,除非你只是想证明一点!例如,处理多达100个逗号分隔的值:-

SELECT a.*
FROM table a
CROSS JOIN
(SELECT 0 AS acnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units
CROSS JOIN
(SELECT 0 AS acnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
WHERE LENGTH(authorid) - LENGTH(REPLACE(authorid, ',', '')) >= (tens.acnt * 10 + units.acnt)
AND SUBSTRING_INDEX(SUBSTRING_INDEX(authorid, ',', tens.acnt * 10 + units.acnt + 1), ',', -1) = 3