Вопрос

Возможно ли отсортировать столбец в алфавитном порядке, игнорируя определенные слова, например, «The»

например

Обычный запрос вернет

string 1
string 3
string 4
the string 2

Я хотел бы вернуться

string 1
the string 2
string 3
string 4

Это возможно?

РЕДАКТИРОВАТЬОбратите внимание, что я хочу заменить несколько слов, таких как The, A и т. д.Можно ли это сделать?

Это было полезно?

Решение

Можешь попробовать

SELECT id, text FROM table ORDER BY TRIM(REPLACE(LOWER(text), 'the ', ''))

но учтите, что для больших наборов данных это будет очень медленно, так как придется пересчитывать новую строку для каждый ряд.

ИМО, вам лучше использовать отдельный столбец с индексом.

Для нескольких стоп-слов просто продолжайте вкладывать их. REPLACE звонки.:)

Другие советы

Это заменит все ведущие буквы "The" в качестве примера.

SELECT  *
FROM    YourTable 
ORDER BY REPLACE(Val,'The ', '')

Да, должна быть возможность использовать выражения с частью ORDER:

SELECT * FROM yourTable ORDER BY REPLACE(yourField, "the ", "")

У меня есть музыкальный список, насчитывающий более 75 000 пластинок, и я столкнулся с похожей ситуацией.Я написал PHP-скрипт, который проверял все строки, начинающиеся с «A», «An» или «The», и отсекал эту часть строки.Я также преобразовал все прописные буквы в строчные и сохранил эту строку в новом столбце.После установки индекса для этого столбца я закончил.

Очевидно, вы отображаете исходный столбец, но сортируете его по вновь созданному индексированному столбцу.Теперь я получаю результаты примерно за секунду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top