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

MYSQL: search IN string as an array of integers

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

SELECT * FROM table WHERE 3 IN CONVERT(SUBSTRING_INDEX(`authorid`,',',-1),UNSIGNED INTEGER)

其中 authorid 值为“3,4,5”。

可以吗,我该怎么做?

使用FIND_IN_SET()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