0
我試圖找到這個問題的解決方案,並有互聯網上看看上下的性格。首先我找到了一個解決方案,但它似乎並不適用於所有情況。我不明白爲什麼。確定是否爲varchar與整理Latin1_CP_CI_AS
這裏是我的問題,我有整理工作不區分大小寫的,我不能改變我的專欄使用情況下此列敏感的排序規則。
這裏是一個樣品,我的測試:
declare @passcap varchar(30)= 'Chanel04O!' collate Latin1_General_CI_AS
select case when binary_checksum(lower(@passcap)) <> binary_checksum(@passcap) and binary_checksum(UPPER(@passcap)) <> binary_checksum(@passcap) then 1 else 0 end as pass_cap
, binary_checksum(lower(@passcap)), binary_checksum(@passcap)
而且結果應該是當然的1使C和將O是大寫。但是我收到一個0
所以我試圖執行BINARY_CHECKSUM和我收到相同的值較低或正常:2017408143
但是,爲什麼?我發現有什麼問題,我有數字和額外的字符(!)。
我能想象做一個正則表達式只取字符,然後用BINARY_CHECKSUM比較,但有更多的東西是否合適?
感謝您的幫助
與SQL Server 2014只是測試和它的作品。這很奇怪,因爲我發佈前測試的是聲明@passcap varchar(30)='Chanel04O!'整理Latin1_General_CS_AS,它不起作用。 –