То, что вы просите, вероятно, не то, что вам нужно. Вы, вероятно, не хотите сортировать только по первой букве. Если первая буква одна и та же, вы, как правило, также хотите посмотреть вторую букву и т. Д. Это приведет к тому, что все песни одного исполнителя будут сгруппированы вместе при сортировке по исполнителю.
Обновленный ответ
Вы сказали, что вам не разрешено менять базу данных. Затем вы можете использовать TRIM(LEADING ... FROM ...)
для удаления неинтересных слов, но учтите, что это будет медленно, так как запрос не сможет использовать индекс для столбца.
SELECT *
FROM song
WHERE SUBSTRING(TRIM(LEADING 'The ' FROM TRIM(LEADING 'A ' FROM title)), 1, 1) = 'B'
ORDER BY TRIM(LEADING 'The ' FROM TRIM(LEADING 'A ' FROM title))
Результат:
'The Bar' -- "The" is ignored when sorting.
'Baz A'
Данные испытаний:
CREATE TABLE song (title NVARCHAR(100) NOT NULL);
INSERT INTO song (title) VALUES
('The Bar'),
('Baz A'),
('Foo'),
('Qux'),
('A Quux');
Оригинальный ответ
Также обратите внимание, что если вы ORDER BY
функция столбца, это будет очень медленно, когда у вас много записей, так как индекс по этому столбцу не может быть использован. Вместо этого вам следует сохранить другой столбец, в котором вы удалите все неинтересные слова (the, an и т. Д.) И упорядочите их по этому столбцу. Вы можете вставить этот столбец из своего приложения при вставке строки или использовать триггер в базе данных.