#sql #sql-server #ssms #sql-server-2019
#sql #sql-сервер #ssms #sql-server-2019
Вопрос:
Я пытаюсь выбрать все столбцы в базе данных , которые начинались со строчных букв . Например, «статус».
Я написал команду, как показано ниже :
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE LEFT(COLUMN_NAME, 1) = 's'
Я получил первую букву и проверил, равна ли ОНА строчной букве «s». Но он возвращает все имена столбцов с буквами «s» и «S».
я даже попробовал это сделать :
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE LEFT(COLUMN_NAME, 1) = LOWER('s')
Но это тоже похоже на предыдущее .
«S» — это , например. мне это нужно для всех писем .
Спасибо….
Ответ №1:
Я думаю, что имена в information_schema
таблицах не чувствительны к регистру. Таким образом, ваша попытка не просто найдет нижний регистр.
Это оставляет вам два варианта. Один из них — возиться с сопоставлениями, чтобы получить эквивалентное сопоставление с учетом регистра.
Другой способ — использовать ascii()
функцию:
select *
from information_schema.columns
where ascii(left(column_name, 1)) between ascii('a') and ascii('z');
Вот db<>fiddle, иллюстрирующий разницу.