Сортировать запрос SQL ORDER BY без косой черты перед экранированными символами

Я пытаюсь выяснить, как отсортировать запрос SQL по фамилии. Это работает за исключением случая, когда фамилия клиента имеет специальный символ.

Например, О’Мейли.

Если эта фамилия сортируется с фамилией «Омар», например, порядок должен быть:

O’Maley
Омар

НО, поскольку я использую addlashes () в PHP перед добавлением его в базу данных, на самом деле сортировка происходит в O \ ‘Maley, и в итоге сортировка оказывается.

Омар
O’Maley

Конечно, \ удаляется с помощью stripslashes () перед отображением для пользователя.

Как я могу сделать это правильно сортировать?

1

Решение

Посмотрите на использование либо REPLACE() или же TRANSLATE() функции sql. Например:

ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')

Выше REPLACE() функции удалят обратную косую черту и одинарные кавычки перед выполнением заказа.

ORDER BY TRANSLATE(last_name, '\\'', '')

Выше TRANSLATE() Функция также удалит обратную косую черту и одинарные кавычки. Это может быть лучшим форматом для указания большего количества символов для удаления из строки.

Примечание: вы не упоминаете базу данных, поэтому я предполагаю, что Oracle. Большинство баз данных имеют эквивалентные функции.

0

Другие решения

Других решений пока нет …