一尘不染

测试大写-T-Sql

sql

全部,

如何检查指定的varchar字符或整个字符串在T-
Sql中是否为大写?理想情况下,我想编写一个函数来测试字符是否为大写,然后可以将其应用于通用varchar。对于非字母字符,应返回false。我只对英语字符感兴趣。

我正在SQL Management Studio中使用T-sql,并且尝试以这种方式从表中拉出以小写字母开头的记录:

select * from TABLE
where SUBSTRING(author,1,1) != LOWER(SUBSTRING(author,1,1))

它返回0条记录,但我知道有些记录以大写和小写字母开头。

谢谢


编辑:
既然podiluska和joachim-
isaksoon都已经成功回答了我的问题(两种方法都可以满足我的目的),有人介意解释一下这将是查询包含大量记录的表以过滤记录的最有效方法作者以大写字母开头还是不以大写字母开头?


阅读 182

收藏
2021-03-10

共1个答案

一尘不染

使用归类

例如:

if ('a'='A' Collate Latin1_General_CI_AI) 
    print'same 1'
else
    print 'different 1'

if ('a'='A' Collate Latin1_General_CS_AI) 
    print'same 2'
else
    print 'different 2'

排序规则名称中的CS表示区分大小写(CI表示不区分大小写)。AI / AS与重音敏感度有关。

或在您的示例中

SUBSTRING(author,1,1) <> LOWER(SUBSTRING(author,1,1)) COLLATE Latin1_General_CS_AI
2021-03-10