【问题标题】:How to check if a column value is in a string SQL如何检查列值是否在字符串 SQL 中
【发布时间】:2015-10-31 11:06:22
【问题描述】:

我有一个包含 150,000 条记录的数据库,我需要将其 FULL 列值或记录与字符串的某些部分进行匹配。 **

因为我想检查 STRING 是否包含 COLUMN 记录而不是! 如果 COLUMN 包含字符串

** (以下示例)

用于测试目的 假设数据库有一个 TABLE 、1 个 COLUMN 和 1 条记录,因为这些记录类似于:

  • 来找我

我需要将它与这个 @STRING

匹配
  • 她现在想来找我

我想执行类似的操作:(但这当然行不通)

SELECT * from TABLE where @STRING like '%'+COLUMN+'%'

我似乎无法用 SQL 解决这个问题,使用 PHP 是可能的,但如果解决方案是使用 SQL 更喜欢,但如果使用 PHP 的解决方案可用,请提出它并注意数据库有超过 150,000 条记录

【问题讨论】:

  • 我看不出做这样的查询的意义。你能解释一下你需要它做什么吗?基本上我认为您正在尝试实现 FULLTEXT 搜索,这在文档中有详细记录。
  • 这将被用作一种基本的审查系统

标签: php mysql sql-server


【解决方案1】:
SELECT * from TABLE where LOCATE(COLUMN, @STRING)>0;

LOCATE(a,b) 返回一个数字,给出 a 在 b 中的字符位置,或者返回 0。

Mysql LOCATE()

文档讨论了 LOCATE() 仅当字符串之一是“二进制字符串”时才区分大小写。这可能不会影响您的用例,但如果它成为问题,您可以将二进制字符串 CONVERT() 转换为语言环境并使用 LOWER() 来获取小写。

MySQL String Functions

【讨论】:

  • @Undefined 祝你好运。
【解决方案2】:

mysql的动态like语法是

SELECT * from TABLE where @STRING like CONCAT('%',COLUMN,'%')

【讨论】:

  • 完美的解决方案,但我选择了 LOCATE,感谢您的帮助,我将使用此解决方案解决其他问题
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2017-03-10
  • 1970-01-01
相关资源
最近更新 更多