在MySql中,如何在WHERE IN子句中使用字符串函数?
例如:-select * from product p left join catalog c on c.catalogid in ((TRIM(BOTH ',' FROM (REPLACE(p.catalog_ids,',,',',')))));
这里p.catalogs_ids =',36,,37,,38,';
但是上面的查询结果
select * from product p left join catalog c on c.catalogid in ('36,37,38');
任何帮助将不胜感激。
最佳答案
问题是您试图在字符串上使用IN。进行字符串比较,而不是像这样:
SELECT *
FROM product p
LEFT JOIN catalog c
ON ',' + p.catalog_ids + ',' LIKE '%,' + c.catalogid + ',%'
多余的逗号有点令人费解,但这是为了确保匹配符合整数而不是数字的一部分。您没有说出catalogid是什么类型,因此您可能需要像这样进行转换:
SELECT *
FROM product p
LEFT JOIN catalog c
ON ',' + p.catalog_ids + ',' LIKE '%,' + CAST(c.catalogid AS CHAR) + ',%'
关于mysql - 如何在WHERE IN子句中使用字符串函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18053487/