2011-06-14 125 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'