首页 > 解决方案 > MySQL SELECT 行基于前缀

问题描述

我试图对包含前缀的表中的数据执行 SELECT,并且我有“关键字”。

因此,与前缀/关键字包含在行数据中的普通搜索不同,前缀/关键字更短(或包含在)可能的数据行中。

这是相反的。如果行中有前缀,我想根据(较长的)单词/阶段找到最佳匹配行。

CREATE TABLE table1 (id INT NOT NULL AUTO_INCREMENT, keyCode VARCHAR(45) NULL, Username VARCHAR(45) NULL, PRIMARY KEY (id));

INSERT INTO table1(keyCode,Username)VALUES('123','Peter')
INSERT INTO table1(keyCode,Username)VALUES('456','Paul')
INSERT INTO table1(keyCode,Username)VALUES('1234','John')

现在假设我得到的短语比数据中的前缀长。

像这样:

SELECT * FROM table1 WHERE keyCode LIKE '123456%';

我知道这行不通,但我想用用户“约翰”返回该行。

如何?(我可以使用存储过程)

标签: mysqlselect

解决方案


您可以LIKE按相反的顺序表达您的表达:

SELECT *
FROM table1
WHERE '123456' LIKE CONCAT(keyCode, '%');

例如,这将与 进行比较,'123456''1234%'这种情况下应该是匹配的。


推荐阅读