以下是我的想法,我知道在这个字段中,第一个字总是至少2个字符。
Select *
From Table!
where SUBSTRING(Name, 1, 3) like '[A-Z]'
然而,这会带回非大写字母的任何想法吗?
答案 0 :(得分:5)
Select ...
From MyTable
Where Name Not Like '%[^A-Z]%' Collate SQL_Latin1_General_CP1_CS_AS
应该注意的是,这也将排除A-Z之外的数字和字符。如果您希望包含非拉丁大写字母,则确实需要使用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 :(得分:1)
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
答案 2 :(得分:0)
答案 3 :(得分:0)
如何针对原始版本测试大写版本:
SELECT * FROM Table WHERE UPPER(Name) = Name
编辑:正如评论中所指出的,如果排序规则不区分大小写(我认为这是默认情况下),这不起作用。查看托马斯的答案。
答案 4 :(得分:0)
你能做点像
的事吗?select * from Table!
where Name = upper(Name)