我需要比较存储过程中的If-Else块中的两个字符串,例如
If(@USERNAME='rajat')
begin
select * from table
end
else
begin
select * from table1
end
但上述方法的问题是'='比较是不区分大小写的。我需要一种比较区分大小写的方法
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)
.....
If(@USERNAME='rajat' COLLATE Latin1_General_CS_AS )
begin
select * from table
end
else
begin
select * from table1
end
强制区分大小写的另一种方法是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