使用类似语句中的mysql变量进行SQL查询?

ale*_*lex 6 mysql

我想根据另一个列值选择/检查文本列中的值

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'
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我如何设置LIKE语句

这不起作用:

SELECT tableA.randomID, wp_posts.post_content, wp_posts.ID
FROM tableA, wp_posts 
WHERE wp_posts.post_content LIKE '%110507B2VU%'
Run Code Online (Sandbox Code Playgroud)

Cod*_*aft 15

当你用引号括起来的东西 - 它被视为一个文字值,所以在你的第一个查询中 - 你把它放在哪里LIKE '%tableA.randomID%'--MySQL实际上把它当作一个字符串.

没有引号,它将取值 - 即:

WHERE something LIKE tableA.randomID
Run Code Online (Sandbox Code Playgroud)

这实际上会将'something'与tableA.randomID的值进行比较,而不是文字字符串.

然后包含你的%通配符以使你的LIKE语句与'equals'比较不同,尝试使用CONCAT()函数.

WHERE something LIKE CONCAT("%",tableA.randomID,"%")
Run Code Online (Sandbox Code Playgroud)

如果tableA.randomID的值是这样的话,那将会是......' banana'实际上最终是这样的:

WHERE something LIKE '%banana%'
Run Code Online (Sandbox Code Playgroud)

我希望我能够清楚地解释一下;-)


Sun*_*arg 5

你可以使用 concat() 和 like

like concat('%',variable_name,'%')
Run Code Online (Sandbox Code Playgroud)

在你的情况下

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'
Run Code Online (Sandbox Code Playgroud)