簡體   English   中英

mysql選擇替換功能

[英]mysql select replace function

我有這個問題。 我有兩個表,我想從中推斷出值,特別是在表的一個字段中,第二個表的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) 

這是正確的。 我應該使用替換件嗎?

WHERE子句中存在問題: in用於比較值和值向量(列)。 在你的情況,你是否tab1.id等於結果的至少一個idresult

但是 idresult只是一串字符串 - 現在用而不是; 更換后。

您可以使用MySQL locate函數來查找字符串中是否存在子字符串:

SELECT name 
  FROM tab1, tab2
 WHERE LOCATE(tab2.id, tab2.field)>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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM