SQL Выберите значения, начинающиеся с заглавной буквы

У меня есть таблица с столбцом типа varchar. Я хочу выбрать значения из этого столбца, которые начинаются только с заглавной буквы.

Например

MyTable

Col1          Col2

Argentina     2
Brasil        3
uruguay       4

Я хочу, чтобы мой запрос select возвращался:

Argentina
Brasil

Ответ 1

Это немного боль. Вы можете использовать ASCII() или COLLATE, но они зависят от того, как хранятся данные. Для varchar() и char() это будет работать:

where ASCII(left(col1, 1)) between ASCII('A') and ASCII('Z')

Ответ 2

 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

надеюсь, что это поможет

Ответ 3

Вы можете использовать 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]%'