[英]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.