我有一个带varchar类型列的表。我想从此列中选择仅以大写字母开头的值。
例如
MyTable的
Col1 Col2
Argentina 2
Brasil 3
uruguay 4
我希望我的选择查询返回:
Argentina
Brasil
答案 0 :(得分:16)
这有点痛苦。您可以使用ASCII()
或COLLATE
,但这取决于数据的存储方式。对于varchar()
和char()
,这将有效:
where ASCII(left(col1, 1)) between ASCII('A') and ASCII('Z')
答案 1 :(得分:0)
您可以使用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]%'
答案 2 :(得分:0)
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
希望这会有所帮助