区分大小写的字符串比较

问题描述 投票:4回答:3

我需要比较存储过程中的If-Else块中的两个字符串,例如

If(@USERNAME='rajat')
begin
select * from table
end
else
begin
select * from table1
end

但上述方法的问题是'='比较是不区分大小写的。我需要一种比较区分大小写的方法

sql-server string tsql stored-procedures
3个回答
8
投票

SQL Server在服务器,数据库和列级别具有区分大小写。这是collation物业的一部分。因此,在您的示例中,可能已将这些设置中的一个或多个设置为不区分大小写。

-- Check server collation
SELECT SERVERPROPERTY('COLLATION')

-- Check database collation.
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;

-- Check column collation
select table_name, column_name, collation_name
from information_schema.columns
where table_name = @table_name

像这样的SQL可能适合你:

If (@USERNAME='rajat' COLLATE Latin1_General_CS_AS)
.....

2
投票
If(@USERNAME='rajat' COLLATE Latin1_General_CS_AS )
begin
select * from table
end
else
begin
select * from table1
end

1
投票

强制区分大小写的另一种方法是convert / cast varbinary类型的两个参数: -

declare @string1 as varchar(50) = 'abc'
declare @string2 as varchar(50) = 'ABC'

if @string1=@string2
    print 'same'
else
    print 'different'

if convert(varbinary(50),@string1)=convert(varbinary(50),@string2)
    print 'same'
else
    print 'different'

生产: -

same
different
© www.soinside.com 2019 - 2024. All rights reserved.