【问题标题】:MySQL: is it possible to insert Contains OR Like in the SELECT statement?MySQL:是否可以在 SELECT 语句中插入包含 OR Like?
【发布时间】:2019-11-14 23:37:34
【问题描述】:

我想在查询的 SELECT 语句中使用 LIKE 或 REGEX(不是在 WHERE 语句中)。

如果 post_content 包含“base64”,我希望在查询输出中看到 1。有可能吗?

SELECT post_content, length(post_content), LIKE('%base64%') AS contained 
FROM `wp_posts`
order by length(post_content) desc

【问题讨论】:

  • 问题是LIKE('%base64%') 本身在这里没有任何意义。您还没有告诉数据库您要针对哪个列运行LIKE 比较。 (您在输出的其他列中提到 post_content 的事实无关紧要 - 您必须知道,SQL 可以从 SELECT 中的许多不同列输出。每个单独的输出列必须是自包含和自描述的,因此您需要告诉它要为该输出处理哪一列。Mangesh's 第二个建议是最简单的方法。
  • @ADyson:作为替代方案,是否可以使用类似于 SELECT 1 from dual WHERE post_content LIKE('%base64%') 的东西? - stackoverflow.com/questions/73751/…
  • 您认为这会如何运作?虚拟dual 表不包含名为post_content 的字段。您必须从实际存储数据的表中进行选择。

标签: mysql


【解决方案1】:

您可以使用 Case 语句

SELECT post_content, length(post_content), 
(CASE WHEN post_content  LIKE('%base64%') then "contained " ELSE "not contained" END)  AS contained 
FROM `wp_posts`
order by length(post_content) desc

SELECT post_content, length(post_content), 
 post_content  LIKE('%base64%')   AS contained 
FROM `wp_posts`
order by length(post_content) desc

DEMO

【讨论】:

  • 谢谢! ps:为什么select语句中不允许使用like或Regexp?
  • @Revious 没有大小写,您也可以使用like,但错过了它检查或比较的列。
猜你喜欢
  • 1970-01-01
  • 2016-03-16
  • 2021-10-15
  • 1970-01-01
  • 2012-02-25
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
相关资源
最近更新 更多