今天突然想到這個問題了,在sql server裏面默認是不區分大小寫的,那涉及到登錄用戶和密碼的時候,要是輸入大小寫賬號和相同的密碼豈不是都能登錄了,這個其實是存在問題的,查了一下網上論壇的回答和博客,給出了以下幾種解決方案,貼出來供大家參考:
第一種解決方案:
</pre><p><pre name="code" class="sql">ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不區分大小寫
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--區分大小寫
alter database 數據庫 COLLATE Chinese_PRC_CS_AS
第二種解決方案:
--創建如下用戶自定義函數(UDF)
CREATE FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50))
--ALTER FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50))
RETURNS INTEGER
AS
BEGIN
DECLARE @i INTEGER
--DECLARE @Str1 VARCHAR(50)
--DECLARE @Str2 VARCHAR(50)
DECLARE @y INT
--SET @Str1='a'
--SET @Str2='A'
SET @i=0
--SELECT ASCII(SUBSTRING(@Str1,@i+1,1))
SET @y=1
DECLARE @iLen INT
SET @iLen = LEN(LTRIM(RTRIM(@Str1)))
IF LEN(LTRIM(RTRIM(@Str1))) < LEN(LTRIM(RTRIM(@Str2))) --THEN
SET @iLen = LEN(LTRIM(RTRIM(@Str2)))
WHILE (@i < @iLen)
BEGIN
IF (ASCII(SUBSTRING(@Str1,@i+1,1))=ASCII(SUBSTRING(@Str2,@i+1,1))) --THEN
SET @i = @i +1
ELSE
BEGIN
SET @y=0
BREAK
END
END
RETURN @y
END
測試:
select *
from Table1
Where dbo.StrComp(Field1,'aAbB') =1
SQL Server 數據庫中的文本信息可以用大寫字母、小寫字母或二者的組合進行存儲。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現。
數據庫是否區分大小寫取決於 SQL Server 的安裝方式。如果數據庫區分大小寫,當搜索文本數據時,必須用正確的大小寫字母組合構造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。