MySQL - 需要字符串中最大匹配字母的搜索结果

标签 mysql sql regex select sql-like

您好,我正在编写自己的 MySQL 查询,我需要如下记录结果。

表格中的单词 - ABC XYZ

我的字符串 - ABC XYZQWER

当我按如下方式运行查询时 -

SELECT * FROM myTABLE where `column` LIKE 'ABC XYZQWER%';

我得到的结果是空的。我知道 MySQL LIKE 匹配字符串的结果。

我需要一种方法来解决这个问题。

我使用“ABC X”搜索它 - 它给了我一个正确的结果。

最佳答案

您可以使用函数LOCATE():

SELECT `column` 
FROM myTable
WHERE LOCATE(`column`, 'ABC XYZQWER') = 1;

只要在名为column的列中有一个值ABC XYZ,查询的结果至少会是:

+---------+
| column  |
+---------+
| ABC XYZ |
+---------+

寻找内在匹配

通过使用比较运算符 >=<,可以在搜索字符串 'ABC XYZQWER' 中找到类似 'BC' 的匹配字符串。所以 WHERE 子句看起来像这样:

WHERE LOCATE(`column`, 'ABC XYZQWER') >= 1;

关于MySQL - 需要字符串中最大匹配字母的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27183303/

相关文章:

sql - 如何使用 PIVOT 根据日期排列数据

如果两个不同的作者在书籍数据库中具有相同的名字,则出现 SQL 问题

java - 大学电子邮件的正则表达式

Python 2.7 中用于 HTTP GET header 的正则表达式匹配

c++ - C++11 中默认的正则表达式引擎是什么?

mysql - 在更新时使用 UNIX_TIMESTAMP 而不是时间戳

php mysql_query() 返回 false

sql - 索引 : Avoid duplicates in table when Status = 'S'

php - 如何纠正 "SQLSTATE[42000]: Syntax error or access violation: 1064 "错误

MySql - 查找存储行的分区