Ms SQLServer 查询 区分大小写

转载 2012年06月26日 16:12:08

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,@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"等形式出现。


sqlserver查询不区分大小写

现象: sqlserver查询不区分大小写 1:普通sql查询语句 2:查询结果不区分大小写 3:改变sql查询语句区分大小写 4:得到区分大小写的SQL语句 5:也可以将...
  • hcwbr123
  • hcwbr123
  • 2017年09月13日 10:27
  • 200

SQL Server 2008 中SQL查询语句中字段值不区分大小写问题处理

一、问题最近在一个系统的对外接口中,经过测试人员测试,发现登录接口中输入的用户名不区分大小写,经过排查找原因,原来是由于数据库忽略了大小写。二、解决办法Select *  from Base_User...
  • taomanman
  • taomanman
  • 2016年07月19日 12:03
  • 4662

SQLServer数据库区分大小写的几种方法

 刚刚使用sql server没有几天, 发现一个很郁闷的问题, sql server 竟然不区分大小写. 比如: select * from abc_tbl where field_1 = abc,...
  • WINCOL
  • WINCOL
  • 2007年05月15日 15:20
  • 10357

SQL SERVER 筛选时区分大小写的语法

Demo: --SELECT * FROM 表名 WHERE 列名 COLLATE Chinese_PRC_CS_AS ='筛选字符' --SELECT * FROM 表名 WHERE 列名 C...
  • qq285679784
  • qq285679784
  • 2017年04月06日 17:27
  • 1578

SQL Server不区分大小写的问题

(1)  先改数据库结构 默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”, 如果使用查询语句:select * from test ...
  • qq_20545159
  • qq_20545159
  • 2015年01月30日 21:50
  • 3540

SQL查询区分大小写方法

一、实例介绍 SQL语句大小写到底是否区分呢?我们先从下面的这个例子来看一下: 例: --> 创建表,插入数据: declare @maco table (number int,myvalue ...
  • c13_tianming
  • c13_tianming
  • 2015年12月18日 16:46
  • 1700

SQL Server 设置数据区分大小写

操作数据库 或 表   从数据库Collate到存储过程到函数,各种方法都有,选择适合你的。   第一种: ALTER TABLE tb ALTER COLUMN colname nva...
  • xushichang
  • xushichang
  • 2012年03月09日 10:41
  • 7772

在SQLServer中区分大小写的几种方法

今天碰到这个问题了,问了一下朋友,给出了以下几种解决方法,贴出来大家都看一下:第一种:(蟋蟀)ALTER TABLE tbALTER COLUMN colname nvarchar(100) COLL...
  • stdotleo
  • stdotleo
  • 2004年11月23日 15:13
  • 3565

SQLServer设置大小写敏感

SQLServer默认的"排序规则"是:Chinese_PRC_CI_AS 这种字符集是不区分大小写字符的 通过设置这个选项可以变更为大小写敏感。 数据库右键 -> 属性 -> 选项 -...
  • duanbeibei
  • duanbeibei
  • 2016年04月06日 18:10
  • 2207

如何设置Sql Server数据库查询时区分大小写和全角半角

zhuanzai 开发中常用的数据库有Oracle和Sql Server,Oracle数据库在查询的时候是有大小写区分的,而Sql Server数据库则不区分大小写,如何使Sql Server数据库...
  • lingxyd_0
  • lingxyd_0
  • 2014年04月21日 10:35
  • 4207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ms SQLServer 查询 区分大小写
举报原因:
原因补充:

(最多只允许输入30个字)