0

在 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');

任何帮助将不胜感激。

4

2 回答 2

0

你可能在找这个

select * from product p 
left join catalog c on c.catalogid in (',36,',',37,',',38,');
于 2013-08-05T08:40:00.990 回答
0

问题是您试图在字符串上使用 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) + ',%'
于 2013-08-05T08:30:15.460 回答