加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Ms SQLServer 查询 区分大小写

发布时间:2020-12-12 14:34:38 所属栏目:MsSql教程 来源:网络整理
导读:1. Case Insensitive Case Sensitive 数据库默认设置一般是COLLATE Chinese_PRC_CI_AS,即不区分大小写,可以在查询的时候在语句最后增加"collate Chinese_PRC_CS_AS",指定为区分大小写进行查询,如: select?? * from tbl_dept where id= 'aA001' collate Chine

1.

Case Insensitive & Case Sensitive
数据库默认设置一般是COLLATE Chinese_PRC_CI_AS,即不区分大小写,可以在查询的时候在语句最后增加"collate Chinese_PRC_CS_AS",指定为区分大小写进行查询,如:
select?? * from tbl_dept
where id= 'aA001' collate Chinese_PRC_CS_AS
这将不会查出'AA001'的记录.

2.
从sqlserver查询分析器中复制出来的字段值不一定是准确的:
比如某字段类型为varchar(15),某条记录的该字段的值为"A123"尾随一个CRLF(回车换行)符号,在从查询分析器中复制出来会显示为多出两个空格(用UltraEdit查看16进制显示为41 31 32 33 20 20 0D 0A),而从企业管理器里面复制出来就是真实的"A123"尾随一个CRLF.(41 31 32 33 0D 0A).
因为即使"A123"没有尾随CRLF,从查询分析器中复制出来,依然可以看到换行0D 0A,所以从以上信息可以推测如下对应关系:
41 31 32 33 20 20 0D 0A?? (左边粗体部分0D 0A其实是查询分析器复制的时候自动附加的)
41 31 32 33 0D 0A
即真正存储的CRLF符号在查询分析器中复制出来后被转换成了两个空格(20 20).

关注以下使用方法:
select *
from ICIssue
where 员工编号 = 'A123' + CHAR(13)+ CHAR(10)

第一种:(蟋蟀) 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,1))=ASCII(SUBSTRING(@Str2,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"等形式出现。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读