【问题标题】:How to check if string value in one column is partially contained in string value of another column using SQL?如何使用 SQL 检查一列中的字符串值是否部分包含在另一列的字符串值中?
【发布时间】:2014-10-01 18:17:51
【问题描述】:

如何使用 SQL 检查一列中的字符串值是否部分包含在另一列的字符串值中?

如果我必须检查 tbl 表的 col_1 列是否包含“Mercury”,我会执行如下查询:

SELECT * FROM tbl WHERE col_1 LIKE '%Mercury%'

但是如果我必须检查每一行,如果 col_2 的完整值部分包含在 col_1 中,我该怎么做。

类似:

SELECT * FROM tbl WHERE col_1 LIKE col_2 

行不通。 我有一个涉及SUBSTRINSTRLENGTH 的解决方案,但这使我的查询速度太慢。 请发表您的建议。 我想在 MySQL 中执行此操作。

【问题讨论】:

  • 搜索子字符串匹配肯定很慢。它不能使用索引,因此需要进行表扫描。

标签: mysql sql


【解决方案1】:
SELECT * FROM tbl WHERE col_1 LIKE '%'+col_2+'%'

编辑:对于 MySQL,等效语法为:

SELECT * FROM tbl WHERE col_1 LIKE CONCAT('%',col_2,'%')

【讨论】:

  • 没错。它有效:) 只是增加了更多的清晰度。在 MySQL 中,我们将使用 concat() 而不是 + 符号。
猜你喜欢
  • 2015-06-06
  • 2020-10-26
  • 2017-10-06
  • 2021-10-27
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多