MSSQLServer中使SQL语句区分大小解决方法

在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 SERVER 2000/2005中默认不区分大小写,可以通过collate Chinese_PRC_CS_AS来要求区分大小写,可以通过
collate Chinese_PRC_CI_AS恢复默认的不区分大小写*/
默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”,如果使用查询语句:
select * from test where tname like 'a%'
则查询的结果会把上面的两条记录都查询出来,这一点上和Oracle有区别.
可以通过设置排序规使其区分大小写,可以分别在创建数据库、修改数据库、创建表的字符型列(charvarcharncharnvarchar等)时指定排序规则来实现。如
create database test COLLATE Chinese_PRC_CS_AS --这样创建的数据库中区分大小写
alter database test COLLATE Chinese_PRC_CS_AS --修改后的数据库中区分大小写
Create table test(tid int primary key,tname varchar(20) collate chines_prc_cs_as)
--这样创建的tname列在使用SELECT 语句时就可以区分大小写了。

总结关于区别大小是根据自己的需求来做的,不是一定要区别哦,在很多时间不区分为更好。

时间: 2024-09-02 20:45:14

MSSQLServer中使SQL语句区分大小解决方法的相关文章

php中防止SQL注入的最佳解决方法_php技巧

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: 复制代码 代码如下: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE"); DROP TABLE表; - ,使查询变成: 复制代码 代

hive中执行sql语句出现的问题

The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i hive中执行sql语句: select pc.category_id, sum(case when t.so_month between 3 and 5 then t.order_item_num else 0 end) as spring, sum(case when t.

MySQL中优化sql语句查询常用的30种方法

本篇文章是对MySQL中优化sql语句查询常用的30种方法进行了详细的分析介绍,需要的朋友参考下   1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以

java-为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行??

问题描述 为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行?? 解决方案 不知道画了删除线是什么意思,你确认这些代码有效么 解决方案二: 你用的什么啊?Hibernate?还是别的框架啊?Hibernate的话,可能是事务没有提交,你执行flush方法就可以了 解决方案三: 代码可以贴全一点吗?看不到关键部分 解决方案四: 代码内容太少了,你的Sqlca是个什么,最起码给个声明. 解决方案五: 你的sqlca是什么啊? 解决方案六: executeSQL方法问题 这个方法只能是查

oracle-怎样验证spool中的sql语句是否执行成功

问题描述 怎样验证spool中的sql语句是否执行成功 在linux环境下,执行一个sh脚本,里面包含了spool,里面包含查询语句,将查询结果指定到了一个txt文件,然后我需要知道这个语句是否执行成功.然后再导到另外的日志txt里面去. 求大神解决,或者推荐别的方法. 解决方案 判断SQL语句是否执行成功

.net中参数从aspx.cs中传接到aspx中作为SQL语句参数???

问题描述 .net中参数从aspx.cs中传接到aspx中作为SQL语句参数???在detail.aspx.cs中我定义了全局变量protectedintno;在detail.aspx.cs进行处理后打算传到detail.aspx界面中作为访问数据库的参数,以下是detail.aspx中的一段代码:<asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$Co

MySQL中使用SQL语句查看某个表的编码方法_Mysql

MySQL中,如何使用SQL语句来查看某个表的编码呢?我们使用show create table 这一SQL语句来解决这个问题. show create table可以查看创建这个表的SQL语句脚本,它的基本语法是: show create table <表名>; 我们用它看看test表的create脚本: mysql> show create table test; +-------+--------------------------------------------- -----

实例讲解ASP动态网页制作中使用SQL语句

sql|动态|网页|语句 在SQL的世界里,最最基础的操作就是SELECT 语句了.在数据库工具下直接采用SQL的时候很多人都. 在ASP中使用SQL语句之1:用Select查询 熟悉下面的操作: SELECT whatFROM whichTableWHERE cnwebjx 执行以上语句就会创建一个存放其结果的查询. 而在ASP页面文件上,你也可以采用以上的一般语法,不过情况稍微不同,ASP编程的时候,SELECT 语句的内容要作为字符串赋给一个变量: SQL = "SELECT what F

ACCESS中使用SQL语句应注意的地方及几点技巧

access|技巧|语句 ACCESS中使用SQL语句应注意的地方及几点技巧引用:Fred 以下SQL语句在ACCESS XP的查询中测试通过 建表:    Create Table Tab1 (        ID Counter,        Name string,        Age integer,        [Date] DateTime); 技巧:    自增字段用 Counter 声明.    字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行. 建立索引: