Я пытаюсь выяснить, как отсортировать запрос SQL по фамилии. Это работает за исключением случая, когда фамилия клиента имеет специальный символ.
Например, О’Мейли.
Если эта фамилия сортируется с фамилией «Омар», например, порядок должен быть:
O’Maley
Омар
НО, поскольку я использую addlashes () в PHP перед добавлением его в базу данных, на самом деле сортировка происходит в O \ ‘Maley, и в итоге сортировка оказывается.
Омар
O’Maley
Конечно, \ удаляется с помощью stripslashes () перед отображением для пользователя.
Как я могу сделать это правильно сортировать?
Посмотрите на использование либо REPLACE()
или же TRANSLATE()
функции sql. Например:
ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')
Выше REPLACE()
функции удалят обратную косую черту и одинарные кавычки перед выполнением заказа.
ORDER BY TRANSLATE(last_name, '\\'', '')
Выше TRANSLATE()
Функция также удалит обратную косую черту и одинарные кавычки. Это может быть лучшим форматом для указания большего количества символов для удаления из строки.
Примечание: вы не упоминаете базу данных, поэтому я предполагаю, что Oracle. Большинство баз данных имеют эквивалентные функции.
Других решений пока нет …