我正在尝试对包含前缀的表中的数据进行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'返回该行。
如何? (我可以使用存储过程)
答案 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;