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
我有一个名为 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