SQL不區(qū)分大小寫,但是你可以加些限制
創(chuàng)新互聯(lián)公司從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元精河做網(wǎng)站,已為上家服務(wù),為精河各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
select * from table where name='a' collate Chinese_PRC_CS_AI
關(guān)于sql中查詢的時(shí)候是否區(qū)分大小寫的問題
CI指定不區(qū)分大小寫,CS指定區(qū)分大小寫
AI指定不區(qū)分重音,AS指定區(qū)分重音
Pref
指定大寫字母優(yōu)先
Omitted指定不區(qū)分全半角,WS指定區(qū)分全半角
如果綁定到架構(gòu)的對(duì)象依賴于數(shù)據(jù)庫(kù)排序規(guī)則,則無法更改數(shù)據(jù)庫(kù)排序規(guī)則。請(qǐng)刪除數(shù)據(jù)庫(kù)排序規(guī)則的依賴項(xiàng),然后重試操作
alter
database
MySchool
COLLATE
Chinese_PRC_CS_AS
--可以針對(duì)某個(gè)表使用區(qū)分大小寫的查詢
Select
*
From
[Users]
Where
uLoginName='ADMIN'
collate
Chinese_PRC_CS_AI_WS--在數(shù)據(jù)庫(kù)屬性--選項(xiàng)中可以設(shè)置數(shù)據(jù)庫(kù)排序規(guī)則--查詢當(dāng)前可用的排序規(guī)則
是區(qū)分大小寫的
在SQLServer中區(qū)分大小寫的幾種方法
今天碰到這個(gè)問題了,問了一下朋友,給出了以下幾種解決方法,貼出來大家都看一下:
第一種:
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不區(qū)分大小寫
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--區(qū)分大小寫
alter database 數(shù)據(jù)庫(kù) COLLATE Chinese_PRC_CS_AS
第二種:
--創(chuàng)建如下用戶自定義函數(shù)(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
測(cè)試:
select *
from Table1
Where dbo.StrComp(Field1,'aAbB') =1
第三種:
SQL Server 數(shù)據(jù)庫(kù)中的文本信息可以用大寫字母、小寫字母或二者的組合進(jìn)行存儲(chǔ)。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現(xiàn)。
數(shù)據(jù)庫(kù)是否區(qū)分大小寫取決于 SQL Server 的安裝方式。如果數(shù)據(jù)庫(kù)區(qū)分大小寫,當(dāng)搜索文本數(shù)據(jù)時(shí),必須用正確的大小寫字母組合構(gòu)造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。
在SQL Server中默認(rèn)對(duì)大小寫是不敏感的,例如fname='peter'和fname='PETER'結(jié)果是一樣的。但有時(shí)候用戶會(huì)要求區(qū)分大小寫,如驗(yàn)證密碼等。這種情況下的處理辦法就是在字段后加上
collate Chinese_PRC_CS_AS_WS如:select * from HRS_EMPLOYEE where EMPLOYEE_NAME='admin' AND PASSWORD
collate Chinese_PRC_CS_AS_WS='hongli'是否區(qū)分大小寫與排序規(guī)則有關(guān),排序規(guī)則中各部分含義如下所示:
舉例分析 Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指針對(duì)大陸簡(jiǎn)體字UNICODE的排序規(guī)則。
排序規(guī)則的后半部份即后綴 含義:
_BIN 二進(jìn)制排序
_CI(CS) 是否區(qū)分大小寫,CI不區(qū)分,CS區(qū)分
_AI(AS) 是否區(qū)分重音,AI不區(qū)分,AS區(qū)分
_KI(KS) 是否區(qū)分假名類型,KI不區(qū)分,KS區(qū)分
_WI(WS) 是否區(qū)分寬度 WI不區(qū)分,WS區(qū)分
區(qū)分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請(qǐng)選擇該選項(xiàng)。
區(qū)分重音:如果想讓比較將重音和非重音字母視為不等,請(qǐng)選擇該選項(xiàng)。如果選擇該選項(xiàng),比較還將重音不同的字母視為不等。
區(qū)分假名:如果想讓比較將片假名和平假名日語(yǔ)音節(jié)視為不等,請(qǐng)選擇該選項(xiàng)。
區(qū)分寬度:如果想讓比較將半角字符和全角字符視為不等,請(qǐng)選擇該選項(xiàng)
ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不區(qū)分大小寫 ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS --區(qū)分大小寫 alter database 數(shù)據(jù)庫(kù) COLLATE Chinese_PRC_CS_AS 第二種:(tree) --創(chuàng)建如下用戶自定義函數(shù)(UDF) CREATE FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50)) --ALTER FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50)) RETURNS INTEGERASBEGINDECLARE @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=1DECLARE @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)BEGINIF (ASCII(SUBSTRING(@Str1,@i+1,1))=ASCII(SUBSTRING(@Str2,@i+1,1))) --THEN SET @i = @i +1ELSEBEGINSET @y=0BREAKENDENDRETURN @yEND測(cè)試:select *from Table1 Where dbo.StrComp(Field1,'aAbB') =1 第三種:(Oliver) SQL Server 數(shù)據(jù)庫(kù)中的文本信息可以用大寫字母、小寫字母或二者的組合進(jìn)行存儲(chǔ)。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現(xiàn)。數(shù)據(jù)庫(kù)是否區(qū)分大小寫取決于 SQL Server 的安裝方式。如果數(shù)據(jù)庫(kù)區(qū)分大小寫,當(dāng)搜索文本數(shù)據(jù)時(shí),必須用正確的大小寫字母組合構(gòu)造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。另外,如果服務(wù)器被安裝成區(qū)分大小寫,則必須用正確的大小寫字母組合提供數(shù)據(jù)庫(kù)、所有者、表和列的名稱。如果提供的名稱大小寫不匹配,則 SQL Server 返回錯(cuò)誤,報(bào)告"無效的對(duì)象名"。當(dāng)使用關(guān)系圖窗格和網(wǎng)格窗格創(chuàng)建查詢時(shí),查詢?cè)O(shè)計(jì)器始終正確地反映出服務(wù)器是否區(qū)分大小寫。但是,如果在 SQL 窗格中輸入查詢,則必須注意使名稱與服務(wù)器解釋名稱的方式相匹配。如果服務(wù)器是用不區(qū)分大小寫的選項(xiàng)安裝的,則 提示 若要確定服務(wù)器是否區(qū)分大小寫,請(qǐng)執(zhí)行存儲(chǔ)過程 sp_server_info,然后檢查第 18 行的內(nèi)容。如果服務(wù)器是用不區(qū)分大小寫的設(shè)置安裝的,則 sort_order 選項(xiàng)將設(shè)置為"不區(qū)分大小寫"??梢詮牟樵兎治銎鬟\(yùn)行存儲(chǔ)過程。 第四種:(非云)
右鍵你的數(shù)據(jù)庫(kù)-屬性-Options,查看Collation(就是排序規(guī)則)。凡是里面能看見_CS_的就是區(qū)分大小寫,Case?Sensitive.沒有的就不區(qū)分。參照這個(gè):
文章名稱:sqlserver小寫,sql語(yǔ)句是大寫還是小寫
URL鏈接:http://sd-ha.com/article16/hdhidg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、標(biāo)簽優(yōu)化、云服務(wù)器、服務(wù)器托管、網(wǎng)站維護(hù)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)