1
有沒有什麼辦法的情況下不敏感架構對象名與案件敏感比較SQL Server中混?不區分大小寫的模式對象名稱
我的數據庫中的所有字符串列都使用CS(區分大小寫)排序規則,但是我無法在數據庫級別切換到CS排序規則,因爲它由傳統應用程序管理,它在查詢中使用不一致的模式對象名稱框讓。
例如,我需要下面的查詢成功執行,並返回0:
select count(*) from PeRsOn where 'A' = 'a'
有沒有什麼辦法的情況下不敏感架構對象名與案件敏感比較SQL Server中混?不區分大小寫的模式對象名稱
我的數據庫中的所有字符串列都使用CS(區分大小寫)排序規則,但是我無法在數據庫級別切換到CS排序規則,因爲它由傳統應用程序管理,它在查詢中使用不一致的模式對象名稱框讓。
例如,我需要下面的查詢成功執行,並返回0:
select count(*) from PeRsOn where 'A' = 'a'
你還可以指定文字的整理,然後將其用於替代上的實例,數據庫中指定的或列級別:
SELECT count(*)
FROM PeRsOn
WHERE 'A' COLLATE Latin1_General_CS_AS = 'a' COLLATE Latin1_General_CS_AS
有趣的是,我沒有意識到這一點。不幸的是,遺留應用程序是數據庫不可知的,所以我不能使用這種MSSQL特定的語法。事實上,我給出的示例查詢是用於確定底層數據庫是否區分大小寫的通用方法。 –
@NathanBaulch - 您需要將DB歸類更改爲區分大小寫或在查詢中添加明確的COLLATE子句以使其區分大小寫。沒有其他方法可以區分大小寫比較。 –
這就是我所害怕的。我希望找到一種在數據庫級別獨立配置模式對象名稱和比較敏感性的方法。 –