基于前缀的MySQL SELECT行

时间:2019-06-01 08:25:41

标签: 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%';

我知道这行不通,但是我想用用户'John'返回该行。

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

2 个答案:

答案 0 :(得分:3)

您可以用相反的顺序来表达LIKE表达式:

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

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

答案 1 :(得分:2)

您可以使用LOCATE()检查字符串开头是否存在keyCode前缀。例如:

SELECT *
FROM table1
WHERE LOCATE(keyCode,'123456') = 1;