在SQLServer中区分大小写的几种方法
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
第二種:(tree)
--創建如下用戶自定義函數(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
第三種:(Oliver)
SQL Server 數據庫中的文本信息可以用大寫字母、小寫字母或二者的組合進行存儲。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現。
數據庫是否區分大小寫取決于 SQL Server 的安裝方式。如果數據庫區分大小寫,當搜索文本數據時,必須用正確的大小寫字母組合構造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。
另外,如果服務器被安裝成區分大小寫,則必須用正確的大小寫字母組合提供數據庫、所有者、表和列的名稱。如果提供的名稱大小寫不匹配,則 SQL Server 返回錯誤,報告"無效的對象名"。
當使用關系圖窗格和網格窗格創建查詢時,查詢設計器始終正確地反映出服務器是否區分大小寫。但是,如果在 SQL 窗格中輸入查詢,則必須注意使名稱與服務器解釋名稱的方式相匹配。
如果服務器是用不區分大小寫的選項安裝的,則
提示?? 若要確定服務器是否區分大小寫,請執行存儲過程 sp_server_info,然后檢查第 18 行的內容。如果服務器是用不區分大小寫的設置安裝的,則 sort_order 選項將設置為"不區分大小寫"。可以從查詢分析器運行存儲過程。
第四種:(非云)
select * from servers where convert(varbinary, name)=convert(varbinary, N'RoCKEY')
第五種:()
ascii('a')再配合Substring()一起用
轉載于:https://www.cnblogs.com/happyday56/archive/2007/11/06/950632.html
總結
以上是生活随笔為你收集整理的在SQLServer中区分大小写的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [请教]关于超大数据量网站的数据搜索和分
- 下一篇: tabs 控件