Ответ 1
Это немного боль. Вы можете использовать ASCII()
или COLLATE
, но они зависят от того, как хранятся данные. Для varchar()
и char()
это будет работать:
where ASCII(left(col1, 1)) between ASCII('A') and ASCII('Z')
У меня есть таблица с столбцом типа varchar. Я хочу выбрать значения из этого столбца, которые начинаются только с заглавной буквы.
Например
MyTable
Col1 Col2
Argentina 2
Brasil 3
uruguay 4
Я хочу, чтобы мой запрос select возвращался:
Argentina
Brasil
Это немного боль. Вы можете использовать ASCII()
или COLLATE
, но они зависят от того, как хранятся данные. Для varchar()
и char()
это будет работать:
where ASCII(left(col1, 1)) between ASCII('A') and ASCII('Z')
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
надеюсь, что это поможет
Вы можете использовать UPPER
И COLLATE
Функции для этого.
Например,
create table #a (text varchar(10))
insert into #a values ('HAI'),('Hai'),('hai'),('44A')
select *from #a where substring([text],1,1) = substring(Upper([text]),1,1) collate SQL_Latin1_General_CP1_CS_AS
AND substring([text],1,1) like '[A-Z]%'