2011-06-14 127 views
3

我要選擇/檢查基於另一列值像SQL語句中的SQL變量查詢?

SELECT tableA.randomID, wp_posts.post_content, wp_posts.ID 
FROM tableA, wp_posts 
WHERE wp_posts.post_content LIKE '%tableA.randomID%' 
AND tableA.randomID = '110507B2VU' 

但沒有工作,我怎麼設置LIKE語句

這不起作用在文本列中的值:

SELECT tableA.randomID, wp_posts.post_content, wp_posts.ID 
FROM tableA, wp_posts 
WHERE wp_posts.post_content LIKE '%110507B2VU%' 

回答

10

當你用引號括起來的東西 - 它在你的第一個查詢作爲一個文本值,所以 - 你把LIKE '%tableA.randomID%' - MySQL的實際處理,作爲一個字符串。

不帶引號,將採取價值 - 即:

WHERE something LIKE tableA.randomID 

這實際上會比較「東西」給tableA.randomID的價值,而不是文字字符串。

要包含%通配符以使LIKE語句與「等於」比較不同,請嘗試使用CONCAT()函數。

WHERE something LIKE CONCAT("%",tableA.randomID,"%") 

這將,如果tableA.randomID的價值是說.. 'banana' 實際上最終是這樣的:

WHERE something LIKE '%banana%' 

我希望我解釋不夠清楚;-)

1

可以使用CONCAT()與像

like concat('%',variable_name,'%') 

你的情況

SELECT tableA.randomID, wp_posts.post_content, wp_posts.ID 
FROM tableA, wp_posts 
WHERE wp_posts.post_content LIKE CONCAT('%',tableA.randomID,'%') 
AND tableA.randomID = '110507B2VU'