4
今天遇到了一個有趣的問題,想知道行爲背後的原因。我有一個包含用戶名的用戶表,我用這個查詢來提取這個唯一的用戶,然後用所有的哈希和鹹的善良進行密碼檢查。爲什麼SQL Server在等號語句中忽略表情符號?
但是,如果我在查詢中添加了emojis,用戶仍然被拖出數據庫,我想知道爲什麼以及需要應用什麼設置。我使用EF,但我測試了原始T-SQL,並且行爲相同,因此EF不是罪魁禍首。
SELECT TOP 1 *
FROM Users
WHERE username = N'someuser' --Works as expected
SELECT TOP 1 *
FROM Users
WHERE username = N'someuser' --ALSO WORKS!
我可以把emojis放在任何地方,儘可能多的用戶仍然可以返回。我明顯可以將C#代碼放在適當的位置,這樣可以進行額外的檢查,以便在那裏解決此問題,但是我希望在數據庫級別解決此問題,因爲可能有許多其他查詢會進行字符串比較。
密碼中的Emojis不是問題,因爲散列和鹽分將應用於C#中,因此密碼中的emojis可以。
爲數據庫設置的排序規則是什麼? –
SQL_Latin1_General_CP1_CI_AS – ManOVision
CP1的意思是[代碼頁1252](https://en.wikipedia.org/wiki/Windows-1252),我假設任何不在該代碼頁中的內容都被完全忽略。 –