我需要兩個字符串中的if-else塊的存儲過程中比較如區分大小寫字符串比較
If(@USERNAME='rajat')
begin
select * from table
end
else
begin
select * from table1
end
但與上述方法的問題是「=」比較是區分insensitive.I需要一種比較區分大小寫的方法
我需要兩個字符串中的if-else塊的存儲過程中比較如區分大小寫字符串比較
If(@USERNAME='rajat')
begin
select * from table
end
else
begin
select * from table1
end
但與上述方法的問題是「=」比較是區分insensitive.I需要一種比較區分大小寫的方法
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)
.....
+1爲了實際提供答案的解釋和其他相關信息,而不是僅發佈沒有其他信息的工作代碼。這似乎是一個在Stackoverflow上垂死的藝術。 – GarethD
使用分頁轉換而不是使用upper()或更低的函數更高效嗎?和collate可以根據排序規則使用問題來改變某些字符 –
@MatheseF,上/下函數只處理區分大小寫。 Collate還處理排序規則和口音敏感度。我不知道哪個更高性能。 – RoadWarrior
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 @[email protected]
print 'same'
else
print 'different'
if convert(varbinary(50),@string1)=convert(varbinary(50),@string2)
print 'same'
else
print 'different'
生產: -
same
different
[SQL區分大小寫敏感字符串比較]的可能的重複(http://stackoverflow.com/questions/3969059/sql-case-sensitive-string-compare) – NickyvV
可能重複。 http://stackoverflow.com/questions/3387378/sql-server-queries-case-sensitivity?rq=1 – Tommassiov
區分大小寫與等號無關。 區分大小寫取決於數據庫的排序規則 –