當前位置:首頁 » 編程語言 » sqlserver查詢區分大小寫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver查詢區分大小寫

發布時間: 2022-08-26 15:59:19

sqlserver 區分大小寫嗎

是區分大小寫的
在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

第二種:
--創建如下用戶自定義函數(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"。

② SQLServer資料庫區分大小寫的幾種方法

第一種:

ALTERTABLEtb--(指定某表的某列)
ALTERCOLUMNcolnamenvarchar(100)COLLATEChinese_PRC_CI_AS--不區分大小寫

ALTERTABLEtb--(指定某表的某列)
ALTERCOLUMNcolnamenvarchar(100)COLLATEChinese_PRC_CS_AS--區分大小寫

alterdatabase資料庫COLLATEChinese_PRC_CS_AS--(指定整個資料庫)


第二種:

--創建如下用戶自定義函數(UDF)

CREATEFUNCTIONStrComp(@Str1VARCHAR(50),@Str2VARCHAR(50))
--ALTERFUNCTIONStrComp(@Str1VARCHAR(50),@Str2VARCHAR(50))
RETURNSINTEGER
AS
BEGIN
DECLARE@iINTEGER
--DECLARE@Str1VARCHAR(50)
--DECLARE@Str2VARCHAR(50)
DECLARE@yINT
--SET@Str1='a'
--SET@Str2='A'
SET@i=0
--SELECTASCII(SUBSTRING(@Str1,@i+1,1))
SET@y=1
DECLARE@iLenINT
SET@iLen=LEN(LTRIM(RTRIM(@Str1)))
IFLEN(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*
fromTable1
Wheredbo.StrComp(Field1,'aAbB')=1


第三種:
SQL Server 資料庫中的文本信息可以用大寫字母、小寫字母或二者的組合進行存儲。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出現。

資料庫是否區分大小寫取決於 SQL Server 的安裝方式。如果資料庫區分大小寫,當搜索文本數據時,必須用正確的大小寫字母組合構造搜索條件。例如,如果搜索名字"Smith",則不能使用搜索條件"=smith"或"=SMITH"。

另外,如果伺服器被安裝成區分大小寫,則必須用正確的大小寫字母組合提供資料庫、所有者、表和列的名稱。如果提供的名稱大小寫不匹配,則 SQL Server 返回錯誤,報告"無效的對象名"。

當使用關系圖窗格和網格窗格創建查詢時,查詢設計器始終正確地反映出伺服器是否區分大小寫。但是,如果在 SQL 窗格中輸入查詢,則必須注意使名稱與伺服器解釋名稱的方式相匹配。

如果伺服器是用不區分大小寫的選項安裝的,則
提示 若要確定伺服器是否區分大小寫,請執行存儲過程 sp_server_info,然後檢查第 18 行的內容。如果伺服器是用不區分大小寫的設置安裝的,則 sort_order 選項將設置為"不區分大小寫"。可以從查詢分析器運行存儲過程。

第四種:

select*fromserverswhereconvert(varbinary,name)=convert(varbinary,N'RoCKEY')

第五種:

ascii('a')再配合Substring()一起用

③ sqlserver欄位區分大小寫嗎

在SQL Server中默認對大小寫是不敏感的,例如fname='peter'和fname='PETER'結果是一樣的。但有時候用戶會要求區分大小寫,如驗證密碼等。這種情況下的處理辦法就是在欄位後加上
collate Chinese_PRC_CS_AS_WS如:select * from HRS_EMPLOYEE where EMPLOYEE_NAME='admin' AND PASSWORD
collate Chinese_PRC_CS_AS_WS='hongli'是否區分大小寫與排序規則有關,排序規則中各部分含義如下所示:
舉例分析 Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字元集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則。
排序規則的後半部份即後綴 含義:
_BIN 二進制排序
_CI(CS) 是否區分大小寫,CI不區分,CS區分
_AI(AS) 是否區分重音,AI不區分,AS區分
_KI(KS) 是否區分假名類型,KI不區分,KS區分
_WI(WS) 是否區分寬度 WI不區分,WS區分
區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。
區分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,比較還將重音不同的字母視為不等。
區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項。
區分寬度:如果想讓比較將半形字元和全形字元視為不等,請選擇該選項

④ 如何在SQL中實現區分大小寫的查詢

  1. 在創建資料庫時,指定要區分大小寫,或者後期再做更改也可以alter database dbname collate chinese_prc_cs_as

  2. 在創建表時,指定要區分大小寫,或者後期再做更改也可以 alter table tbname collate chinese_prc_cs_as

  3. 如果只是想使用一次,不想修改整個表或整個資料庫。

    3.1可以在使用時,將查詢或使用到的欄位,轉成二進制形式進行比較就可以了(大小寫的二進制形式肯定是不一樣的~)

    3.2可以在查詢或使用時,指名使用 簡體中文做為資料庫的查詢規則。 指定SQL server的排序規則 Chinese_PRC指的是中國大陸地區,如果是台灣地區則為Chinese_Taiwan CI指定不區分大小寫,如果要在查詢時區分輸入的大小寫則改為CS AS指定區分重音,同樣如果不需要區分重音,則改為AI COLLATE可以針對整個資料庫更改排序規則,也可以單獨修改某一個表或者某一個欄位的排序規則,指定排序規則很有用,比如用戶管理表,需要驗證輸入的用戶名和密碼的正確性,一般是要區分大小寫的。 使用collate: select * from 表 where 欄位='King' collate chinese_prc_cs_as 或者 轉換為varbinary select * from 表 where convert(varbinary(1000),欄位)=convert(varbinary(1000),'King')

⑤ 如何在mysql中使欄位區分大小寫

select * from abc whre id="a" 與
select * from abc whre id="A" 查詢出的結果是不同的
對單個欄位設置的方式就不用說了,希望得到是對mysql默認的設置或是對整個庫的設置

是否區分大小寫和校對規則有關,默認設的規則是大小寫不敏感的。
show create table如果看到collate是ci結尾,那麼就是不區別的,如果cs或bin結尾,就是區別的。
如果建表的時候選擇的是區別大小寫的規則而查詢的時候又暫時不想區別,
可以用類似
WHERE column_name COLLATE latin1_general_ci = 'xxx'
的寫法改變查詢使用的校對規則

⑥ Sqlserver查詢的時候是否區分大小寫的問題

關於sql中查詢的時候是否區分大小寫的問題
CI指定不區分大小寫,CS指定區分大小寫
AI指定不區分重音,AS指定區分重音
Pref
指定大寫字母優先
Omitted指定不區分全半形,WS指定區分全半形
如果綁定到架構的對象依賴於資料庫排序規則,則無法更改資料庫排序規則。請刪除資料庫排序規則的依賴項,然後重試操作
alter
database
MySchool
COLLATE
Chinese_PRC_CS_AS
--可以針對某個表使用區分大小寫的查詢
Select
*
From
[Users]
Where
uLoginName='ADMIN'
collate
Chinese_PRC_CS_AI_WS--在資料庫屬性-->選項中可以設置資料庫排序規則--查詢當前可用的排序規則

⑦ 如何讓sqlserver對查詢字元串大小寫敏感

聲明我的答案是網路的,這個很常見啊,網上一搜一大堆。

在SQLServer中默認對大小寫是不敏感的,例如fname='peter'和fname='PETER'結果是一樣的。但有時候用戶會要求區分大小寫,如驗證密碼等。這種情況下的處理辦法就是在欄位後加上collateChinese_PRC_CS_AS_WS
如:
select*fromHRS_EMPLOYEEwhereEMPLOYEE_NAME='admin'ANDPASSWORDcollateChinese_PRC_CS_AS_WS='hongli'
是否區分大小寫與排序規則有關,排序規則中各部分含義如下所示:

舉例分析Chinese_PRC_CS_AI_WS

前半部份:指UNICODE字元集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則。
排序規則的後半部份即後綴含義:
_BIN二進制排序
_CI(CS)是否區分大小寫,CI不區分,CS區分
_AI(AS)是否區分重音,AI不區分,AS區分
_KI(KS)是否區分假名類型,KI不區分,KS區分
_WI(WS)是否區分寬度WI不區分,WS區分
區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。
區分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,比較還將重音不同的字母視為不等。
區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項。
區分寬度:如果想讓比較將半形字元和全形字元視為不等,請選擇該選項

⑧ 如何查看sql server是否區分大小寫

sql
server2008是不區分大小寫的。
但是,一般的操作,如select
,
from
,where

最好寫成大寫,畢竟它的系統內部都是用的大寫。

⑨ MS SQLServer查詢 區分大小寫 奇怪問題

您好,MySQL中語句是不區分大小寫的,但是在查詢語句中所要匹配的字元是要看大小寫的。

⑩ SQL語句區分大小寫嗎

SQL大小寫並不敏感,但是如果是引起來的字元,則是區分大小寫的,

示例如下,

1、創建測試表,create table test_uporlow(id number, value varchar2(20));