如何在mysql中使用with子句替换函数

时间:2012-07-07 08:02:29

标签: mysql sql

我想要sql查询,它将输出作为concat字符串

Sql Query

SELECT GROUP_CONCAT(nm) FROM xyz WHERE xyz.id IN (REPLACE(abc,"|",','))

其中abc是字符串,如1 | 2 | 3 | 4,这是xyz表的id 上面的查询只给出abc中的第一个id的nm。我创建了像

这样的查询
SELECT GROUP_CONCAT(nm) FROM xyz WHERE xyz.id IN ("1,2,3,4")

所以(“)可能会造成任何人都可以提供帮助的问题。

2 个答案:

答案 0 :(得分:3)

您可以使用LIKE,(但之后不会使用索引)

SELECT GROUP_CONCAT(nm)
FROM xyz
WHERE CONCAT('|', abc, '|') LIKE CONCAT('%|', xyz.id, '|%');

答案 1 :(得分:2)

你可以这样使用INSTR

SELECT GROUP_CONCAT(nm) 
FROM xyz 
WHERE INSTR(CONCAT('|', abc, '|'), CONCAT('|', xyz.id, '|')) > 0

或者您可以实现拆分功能或使用动态SQL。