MYSQL通配符搜索-排序结果问题

MYSQL通配符搜索-排序结果问题,mysql,Mysql,我在mysql数据库中有一个化学品表。我想执行通配符搜索,如- SELECT * FROM chemical WHERE chemical like '%toluene%' SQL查询结果为- Bromotoluene Chlorotoluene (Benzyl chloride) Cymene (Isopropyltoluene) Dinitrotoluene (DNT) Isopropyl toluene (Cymene) Octachlorotoluene Toluene (Toluol

我在mysql数据库中有一个化学品表。我想执行通配符搜索,如-

SELECT * FROM chemical WHERE chemical like '%toluene%'
SQL查询结果为-

Bromotoluene
Chlorotoluene (Benzyl chloride)
Cymene (Isopropyltoluene)
Dinitrotoluene (DNT)
Isopropyl toluene (Cymene)
Octachlorotoluene
Toluene (Toluol)*
Toluene di-isocyanide (TDI)
Trinitrotoluene (TNT)
是否可以在任何其他结果之前列出与字符串的第一个字符(在本例中为“甲苯”)完全匹配的结果?例如,我想显示-

Toluene (Toluol)
Toluene di-isocyanide (TDI) 
首先,然后是其余的结果


非常感谢您的帮助。

我将把查询分为两部分:

select * FROM chemical where chemical like 'toluene%'
union
select * FROM chemical where chemical like '%toluene%'

为了把更相关的结果放在首位。重复的结果将被
union

自动排除。我将把查询分为两部分:

select * FROM chemical where chemical like 'toluene%'
union
select * FROM chemical where chemical like '%toluene%'
CREATE TABLE info (val varchar(50));

INSERT INTO info (val) VALUES ('Bromotoluene');
INSERT INTO info (val) VALUES ('Chlorotoluene (Benzyl chloride)');
INSERT INTO info (val) VALUES ('Cymene (Isopropyltoluene)');
INSERT INTO info (val) VALUES ('Dinitrotoluene (DNT)');
INSERT INTO info (val) VALUES ('Isopropyl toluene (Cymene)');
INSERT INTO info (val) VALUES ('Octachlorotoluene');
INSERT INTO info (val) VALUES ('Toluene (Toluol)*');
INSERT INTO info (val) VALUES ('Toluene di-isocyanide (TDI)');
INSERT INTO info (val) VALUES ('Trinitrotoluene (TNT)');

SELECT *
FROM info
WHERE val LIKE '%toluene%'
ORDER BY CASE WHEN val LIKE 'toluene%' THEN 0 ELSE 1 END, val
为了把更相关的结果放在首位。重复的结果将被
union
自动排除

CREATE TABLE info (val varchar(50));

INSERT INTO info (val) VALUES ('Bromotoluene');
INSERT INTO info (val) VALUES ('Chlorotoluene (Benzyl chloride)');
INSERT INTO info (val) VALUES ('Cymene (Isopropyltoluene)');
INSERT INTO info (val) VALUES ('Dinitrotoluene (DNT)');
INSERT INTO info (val) VALUES ('Isopropyl toluene (Cymene)');
INSERT INTO info (val) VALUES ('Octachlorotoluene');
INSERT INTO info (val) VALUES ('Toluene (Toluol)*');
INSERT INTO info (val) VALUES ('Toluene di-isocyanide (TDI)');
INSERT INTO info (val) VALUES ('Trinitrotoluene (TNT)');

SELECT *
FROM info
WHERE val LIKE '%toluene%'
ORDER BY CASE WHEN val LIKE 'toluene%' THEN 0 ELSE 1 END, val


仅使用
%tolen
谢谢您的建议。但这并不能解决我的问题。我想列出所有包含字符串“甲苯”的化学品。%甲苯将只显示溴甲苯和八氯甲苯。如果您想获得点击率,可以尝试全文搜索:仅使用
%tolene
谢谢您的建议。但这并不能解决我的问题。我想列出所有包含字符串“甲苯”的化学品。%甲苯将只显示溴甲苯和八氯甲苯。如果你想获得点击率,你可以尝试全文搜索:点击!非常感谢,马上就来!非常感谢。如果您更改表格的名称,它会这样做;显然,“信息”是不被接受的。@愤世嫉俗只是将所有内容都更改为MySQL。如果您更改表名,它会被接受;显然,“信息”是不被接受的。@愤世嫉俗者只是把一切都改成了MySQL。