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

問題は、文字列で 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 に答える
0

あなたはおそらくこれを探しています

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