【发布时间】:2011-01-25 19:34:33
【问题描述】:
我有一张这样的桌子:
mysql> 从测试中选择 *; +--------------+ |姓名 | +--------------+ |一个 | |二 | |三 | |井字游戏 | |井字游戏 | +--------------+ 5 行一组(0.00 秒)我想查询它,以便获得所有行,但这些行首先匹配某个关键字。这是我到目前为止得到的:
mysql> select * from test order by instr(name, 'tac') desc; +--------------+ |姓名 | +--------------+ |井字游戏 | |井字游戏 | |一个 | |二 | |三 | +--------------+ 一组 5 行(0.01 秒)唯一的问题是我更愿意按照关键字出现在字段开头的距离来对匹配的行进行排序。因为 instr() 返回 0 表示不匹配,所以当我 ORDER BY INSTR(name, 'tac') ASC 时首先出现不匹配的行。我一直无法找到解决这个问题的方法。
我需要 MySQL 来这样订购
1
2
3
4
0
0
0
或者我需要 instr() 返回 NULL 而不是 0。
【问题讨论】: