Я использую Microsoft SQL Management Studio V18. У меня есть столбец, в котором мне нужно найти, содержит ли он строчные буквы. См. ниже желаемый результат:
Материал# | Material_Desc | Contain_Lower |
---|---|---|
123 | ОПИСАНИЕ ТОВАРА | Да |
213 | Описание товара | Нет |
Поскольку сопоставление по умолчанию нечувствительно к регистру, я просто хочу включить его для этого конкретного столбца.
Я пробовал следующее, однако это не сработало - оно не определяет, содержит ли row2 строчный алфавит. Что я могу сделать, чтобы определить, есть ли в столбце нижний регистр?
select
table.Material_Desc,
Case when
table.Material_Desc collate SQL_Latin1_General_CP1_CS_AS = table.Material_Desc
Then 'No' else 'Yes' end as Contain_Lower
from table
Вы на правильном пути, но вы только что перевели столбец в ВЕРХНИЙ РЕГИСТР. Также необходимо сравнить:
SELECT
material_desc,
CASE WHEN material_Desc = UPPER(material_desc) COLLATE SQL_Latin1_General_CP1_CS_AS
THEN 'No' ELSE 'Yes' END AS contain_lower
FROM table;
Вам нужно указать
COLLATE
столбец в сравнении с чувствительным к регистру столбцом. Если значения в столбце всегда должны быть чувствительны к регистру, вам следует добавить (PERSISTED
) вычисляемый столбец или изменить сопоставление столбцов.