mysql select replace function

时间:2017-06-12 12:56:48

标签: mysql replace

我有这个问题。我有两个表,我想从中推断出值,特别是在表的一个字段中,第二个表的id分隔开; 使用此程序:

SELECT name 
  FROM tab1
 WHERE id in (SELECT REPLACE(field,";",",") as idresult 
                from tab2 
               where tab2.id=1)

从这个查询我希望有更多行,因为在tab2字段中有这些值(1; 2; 3; 4; 5)

如果您在没有选择替换的情况下运行相同的过程,我会得到正确的 结果ie ::

SELECT name FROM tab1
WHERE id in (1,2,3,4,5) 

是的。我应该使用替换件吗?

2 个答案:

答案 0 :(得分:0)

您的WHERE子句中存在问题:in用于比较值和值向量(列)。在您的情况下,检查tab1.id是否至少等于idresult的一个结果。

但是 idresult只是字符串的一列 - 现在内部带有,而不是; 更换后。

您可以使用MySQL locate function来查找字符串中是否存在子字符串:

SELECT name 
  FROM tab1, tab2
 WHERE LOCATE(tab2.id, tab2.field)>0 

答案 1 :(得分:0)

我的理解是tab2查询将为您提供逗号分隔的字符串,该字符串应在tab1中用作过滤器。为此,您可以在MySQL中使用FIND_IN_SET命令,如下所示:

select name from tab1 where find_in_set( id, (SELECT REPLACE(field,";",",") from tab2 where tab2.id=1)) > 0;