Предполагая, что вы не хотите изменять содержимое таблицы (и, следовательно, получать чуть менее эффективные запросы), следует выполнить следующее:
(Если у вас до есть свободное время для изменения таблицы, см. Предложения в конце этого ответа)
SELECT Title
FROM myTable
WHERE (Title LIKE 'x%' OR Title LIKE 'THE x%')
-- AND Title NOT LIKE 'THE [^T]%'
ORDER BY Title
Примечания:
- х обозначить нужную букву (пример: LIKE 'A%' и т. д.)
- Дополнительное условие «И НАЗВАНИЕ НЕ НРАВИТСЯ» требуется только в том случае, если «Х» - это буква «Т» (в противном случае функционально избыточно, но не меняет результат)
- Я не уверен в поддержке [^xyz]
(то есть NOT символов x, y или z), поэтому [^T]
можно заменить его положительным эквивалентом, скажем, [A-RS-Z0-9]
.
Есть несколько других стоп-слов, которые следует учитывать («A», «AN», «OF» ...), но для названий книг или фильмов принято считать только «THE». Если вам нужно разобраться с другими статьями, логику можно расширить так:
SELECT Title
FROM myTable
WHERE (Title LIKE 'x%'
OR Title LIKE 'THE x%'
OR Title LIKE 'A x%'
OR Title LIKE 'AN x%')
-- the following is only needed when "x" is either the letter T or A.
-- AND (Title NOT LIKE 'THE [^T]%'
-- AND Title NOT LIKE 'A [^A]%'
-- AND Title NOT LIKE 'AN [^A]%'
-- )
ORDER BY Title
Существуют лучшие решения, , если вы можете изменить содержимое таблицы . Некоторые из них предполагают предварительное вычисление одного или нескольких дополнительных столбцов (и их сохранение / добавление при добавлении новых записей и т. Д.).
- См., Например, ответ Cletus в этом посте для подхода "sort_column", где дополнительный столбец содержит заголовок, лишенный любого нежелательного начального шумового слова. В дополнение к своему назначению в качестве поля фильтрации в исходной задаче поиска букв в ОП, этот столбец также может использоваться для более удобной / разумной сортировки списков названий, которые были созданы фильтром, не связанным с исходным письмом. и / или начало названия (например, поиск по году).
- Вариант вышеописанного состоит в том, чтобы хранить только «эффективную» начальную букву (букву за пределами нежелательного шума), что делает столбец меньшего размера, но также и менее универсальным.
- Сам столбец заголовка может быть обновлен, сохраняя измененную форму заголовка, в результате чего постороннее ведущее шумовое слово (а) перемещается в конец строки, между скобками. Эта практика довольно распространена в каталогах библиографического типа.