Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Совпадение в пределах диапазона

#sql #sql_server


Есть база данных Teams. Состоящая из country, capital и teamName. Нужно отобразить
те страны в порядке убывания, у которых в названиях столиц ровно две буквы  в диапазоне
от "а" до "д".

Проверку на вхождение букв из диапазона понятно как сделать, а вот как узнать что
этих букв именно 2? 

 SELECT country, capital
 FROM Teams
 WHERE capital like '%[а-д]%' 
 ORDER BY country DESC

    


Ответы

Ответ 1



С точностью до диалекта SQL: SELECT country, capital FROM Teams WHERE capital LIKE '%[а-д]%[а-д]%' AND capital NOT LIKE '%[а-д]%[а-д]%[а-д]%' ORDER BY country DESC

Ответ 2



Начиная с SQL Server 2017 можно использовать функцию TRANSLATE: SELECT country, capital FROM Teams WHERE len(replace(translate(capital, N'абвгд', '~~~~~'), '~', '')) = len(capital) - 2 ORDER BY country DESC

Комментариев нет:

Отправить комментарий