SQL Server 2008: как выбрать все строки, где поле имеет все заглавные буквы? - PullRequest
3 голосов
/ 29 апреля 2011

Вот о чем я думал, я знаю, что в этом поле первое слово всегда будет длиной не менее 2 символов.

Select *  
From Table!
where SUBSTRING(Name, 1, 3) like '[A-Z]'

Тем не менее, это возвращает не заглавные буквы какие-либо идеи?

Ответы [ 5 ]

5 голосов
/ 29 апреля 2011
Select ...
From MyTable
Where Name Not Like '%[^A-Z]%' Collate SQL_Latin1_General_CP1_CS_AS

Следует отметить, что это также исключает цифры и символы за пределами AZ.Если вы хотите, чтобы включались нелатинские символы верхнего регистра, вам действительно нужно использовать функцию Upper вместе с предикатом Collate:

Select ...
From MyTable
Where Name = Upper(Name) Collate SQL_Latin1_General_CP1_CS_AS

Тестовый скрипт:

With TestData As
    (
    Select '012324' As Name
    Union All Select 'ABC'
    Union All Select 'abc'
    Union All Select 'aBc'
    Union All Select 'ABé'
    Union All Select 'ABÉ'
    )
Select *
From TestData
Where Name = UPPER(Name) Collate SQL_Latin1_General_CP1_CS_AS

Результаты:

012324
ABC
ABÉ
1 голос
/ 29 апреля 2011
CREATE TABLE #table1
(
x VARCHAR(32)
);

INSERT #table1 SELECT '123aaa';
INSERT #table1 SELECT 'foo';
INSERT #table1 SELECT 'BaR';
INSERT #table1 SELECT 'saM';
INSERT #table1 SELECT 'Sam';
INSERT #table1 SELECT 'SaM';
INSERT #table1 SELECT 'SAM';

SELECT * FROM #table1
WHERE CONVERT(VARBINARY(32), x) = CONVERT(VARBINARY(32), UPPER(x))

DROP TABLE #table1;

Выход:

x
SAM
0 голосов
/ 29 апреля 2011

Как насчет тестирования заглавной версии по сравнению с оригиналом:

SELECT * FROM Table WHERE UPPER(Name) = Name

Редактировать : Как указано в комментариях, это не сработает, если сопоставление не учитывает регистрпо умолчанию думаю).Проверьте ответ Томаса.

0 голосов
/ 29 апреля 2011

Не могли бы вы сделать что-то вроде

select * from Table!
where Name = upper(Name) 
0 голосов
/ 29 апреля 2011

Вам нужно будет добавить сопоставление к вашему запросу. Это хороший пример того, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...