У меня есть такая таблица:
mysql> select * from test;
+-------------+
| name |
+-------------+
| one |
| two |
| three |
| tic tac toe |
| tac toe tic |
+-------------+
5 rows in set (0.00 sec)
Я бы хотел запросить ее, чтобы получить все строки, но с теми строками, которые сначала соответствуют определенному ключевому слову.Это то, что я получил до сих пор:
mysql> select * from test order by instr(name, 'tac') desc;
+-------------+
| name |
+-------------+
| tic tac toe |
| tac toe tic |
| one |
| two |
| three |
+-------------+
5 rows in set (0.01 sec)
Единственная проблема с этим заключается в том, что я предпочел бы упорядочить соответствующие строки по тому, как близко к началу поля встречается ключевое слово.Поскольку instr () возвращает 0 при отсутствии совпадения, несовпадающие строки появляются первыми, когда я ORDER BY INSTR (name, 'tac') ASC.Я не смог найти способ обойти это.
Мне нужен MySQL для такого порядка
1
2
3
4
0
0
0
, или мне нужно instr () для возврата NULL вместо 0.