MYSQL:将IN字符串作为整数数组

时间:2016-02-08 11:18:46

标签: 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'。

有可能吗,我该怎么做?

2 个答案:

答案 0 :(得分:2)

使用FIND_IN_SET() MySQL功能

试试这个

SELECT FIND_IN_SET('3',authorid);

希望这对你有用。

答案 1 :(得分:1)

如果出现这个问题,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