sql關(guān)鍵字不區(qū)分大小寫(xiě)。
創(chuàng)新互聯(lián)建站是一家專(zhuān)注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),志丹網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:志丹等地區(qū)。志丹做網(wǎng)站價(jià)格咨詢(xún):028-86922220
比如,select 或者SELECT都是可以的,甚至寫(xiě)成 sElEct在大多數(shù)數(shù)據(jù)庫(kù)中都允許。
自定義對(duì)象則和數(shù)據(jù)庫(kù)本身設(shè)置有關(guān)。
比如,表名和字段名等。sqlserver默認(rèn)配置下是不區(qū)分大小寫(xiě)的,oracle在默認(rèn)配置下是區(qū)分大小寫(xiě)的。不過(guò)都可以通過(guò)配置選項(xiàng)來(lái)配置。
數(shù)據(jù)庫(kù)自帶函數(shù)則和數(shù)據(jù)庫(kù)有關(guān)。
比如日期函數(shù),cast,convert函數(shù)等。在sqlserver中,是不區(qū)分大小寫(xiě)的,但是informax數(shù)據(jù)中,部分函數(shù)區(qū)分大小寫(xiě)。這個(gè)要看具體數(shù)據(jù)庫(kù)了。
在SQL Server中默認(rèn)對(duì)大小寫(xiě)是不敏感的,例如fname='peter'和fname='PETER'結(jié)果是一樣的。但有時(shí)候用戶(hù)會(huì)要求區(qū)分大小寫(xiě),如驗(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ū)分大小寫(xiě)與排序規(guī)則有關(guān),排序規(guī)則中各部分含義如下所示:
舉例分析 Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指針對(duì)大陸簡(jiǎn)體字UNICODE的排序規(guī)則。
排序規(guī)則的后半部份即后綴 含義:
_BIN 二進(jìn)制排序
_CI(CS) 是否區(qū)分大小寫(xiě),CI不區(qū)分,CS區(qū)分
_AI(AS) 是否區(qū)分重音,AI不區(qū)分,AS區(qū)分
_KI(KS) 是否區(qū)分假名類(lèi)型,KI不區(qū)分,KS區(qū)分
_WI(WS) 是否區(qū)分寬度 WI不區(qū)分,WS區(qū)分
區(qū)分大小寫(xiě):如果想讓比較將大寫(xiě)字母和小寫(xiě)字母視為不等,請(qǐng)選擇該選項(xiàng)。
區(qū)分重音:如果想讓比較將重音和非重音字母視為不等,請(qǐng)選擇該選項(xiàng)。如果選擇該選項(xiàng),比較還將重音不同的字母視為不等。
區(qū)分假名:如果想讓比較將片假名和平假名日語(yǔ)音節(jié)視為不等,請(qǐng)選擇該選項(xiàng)。
區(qū)分寬度:如果想讓比較將半角字符和全角字符視為不等,請(qǐng)選擇該選項(xiàng)
是區(qū)分大小寫(xiě)的
在SQLServer中區(qū)分大小寫(xiě)的幾種方法
今天碰到這個(gè)問(wèn)題了,問(wèn)了一下朋友,給出了以下幾種解決方法,貼出來(lái)大家都看一下:
第一種:
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不區(qū)分大小寫(xiě)
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--區(qū)分大小寫(xiě)
alter database 數(shù)據(jù)庫(kù) COLLATE Chinese_PRC_CS_AS
第二種:
--創(chuàng)建如下用戶(hù)自定義函數(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ù)中的文本信息可以用大寫(xiě)字母、小寫(xiě)字母或二者的組合進(jìn)行存儲(chǔ)。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現(xiàn)。
數(shù)據(jù)庫(kù)是否區(qū)分大小寫(xiě)取決于 SQL Server 的安裝方式。如果數(shù)據(jù)庫(kù)區(qū)分大小寫(xiě),當(dāng)搜索文本數(shù)據(jù)時(shí),必須用正確的大小寫(xiě)字母組合構(gòu)造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。
ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不區(qū)分大小寫(xiě) ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS --區(qū)分大小寫(xiě) alter database 數(shù)據(jù)庫(kù) COLLATE Chinese_PRC_CS_AS 第二種:(tree) --創(chuàng)建如下用戶(hù)自定義函數(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ù)中的文本信息可以用大寫(xiě)字母、小寫(xiě)字母或二者的組合進(jìn)行存儲(chǔ)。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現(xiàn)。數(shù)據(jù)庫(kù)是否區(qū)分大小寫(xiě)取決于 SQL Server 的安裝方式。如果數(shù)據(jù)庫(kù)區(qū)分大小寫(xiě),當(dāng)搜索文本數(shù)據(jù)時(shí),必須用正確的大小寫(xiě)字母組合構(gòu)造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。另外,如果服務(wù)器被安裝成區(qū)分大小寫(xiě),則必須用正確的大小寫(xiě)字母組合提供數(shù)據(jù)庫(kù)、所有者、表和列的名稱(chēng)。如果提供的名稱(chēng)大小寫(xiě)不匹配,則 SQL Server 返回錯(cuò)誤,報(bào)告"無(wú)效的對(duì)象名"。當(dāng)使用關(guān)系圖窗格和網(wǎng)格窗格創(chuàng)建查詢(xún)時(shí),查詢(xún)?cè)O(shè)計(jì)器始終正確地反映出服務(wù)器是否區(qū)分大小寫(xiě)。但是,如果在 SQL 窗格中輸入查詢(xún),則必須注意使名稱(chēng)與服務(wù)器解釋名稱(chēng)的方式相匹配。如果服務(wù)器是用不區(qū)分大小寫(xiě)的選項(xiàng)安裝的,則 提示 若要確定服務(wù)器是否區(qū)分大小寫(xiě),請(qǐng)執(zhí)行存儲(chǔ)過(guò)程 sp_server_info,然后檢查第 18 行的內(nèi)容。如果服務(wù)器是用不區(qū)分大小寫(xiě)的設(shè)置安裝的,則 sort_order 選項(xiàng)將設(shè)置為"不區(qū)分大小寫(xiě)"。可以從查詢(xún)分析器運(yùn)行存儲(chǔ)過(guò)程。 第四種:(非云)
關(guān)于sql中查詢(xún)的時(shí)候是否區(qū)分大小寫(xiě)的問(wèn)題
CI指定不區(qū)分大小寫(xiě),CS指定區(qū)分大小寫(xiě)
AI指定不區(qū)分重音,AS指定區(qū)分重音
Pref
指定大寫(xiě)字母優(yōu)先
Omitted指定不區(qū)分全半角,WS指定區(qū)分全半角
如果綁定到架構(gòu)的對(duì)象依賴(lài)于數(shù)據(jù)庫(kù)排序規(guī)則,則無(wú)法更改數(shù)據(jù)庫(kù)排序規(guī)則。請(qǐng)刪除數(shù)據(jù)庫(kù)排序規(guī)則的依賴(lài)項(xiàng),然后重試操作
alter
database
MySchool
COLLATE
Chinese_PRC_CS_AS
--可以針對(duì)某個(gè)表使用區(qū)分大小寫(xiě)的查詢(xún)
Select
*
From
[Users]
Where
uLoginName='ADMIN'
collate
Chinese_PRC_CS_AI_WS--在數(shù)據(jù)庫(kù)屬性--選項(xiàng)中可以設(shè)置數(shù)據(jù)庫(kù)排序規(guī)則--查詢(xún)當(dāng)前可用的排序規(guī)則