打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL CASE SENSITIV( 大小写敏感)相关--资料收集未整理

SQL Server 大小写敏感的问题

http://www.jiaock.com/sqlserver/2012/0625/2200.html

当修改默认排序规则的时候,经常会出现无法用排他锁锁定该数据库的错误

首先应该去掉其他的访问线程

CREATE TABLE #HarveyLock
(
 SPID  INT,
 DBID  INT,
 OBJID  INT,
 INDID  INT,
 TYPE  VARCHAR(100),
 RESOURCE VARCHAR(100),
 MODE  VARCHAR(100),
 STATUS  VARCHAR(100)
)

INSERT INTO #HarveyLock EXEC SP_LOCK

SELECT distinct 'kill ' +convert(varchar,SPID )  FROM #HarveyLock

杀死线程后,在修改数据库的排序规则

 

 


ALTER TABLE
表名字
ALTER COLUMN
列名字nvarchar(100)(类型)COLLATE Chinese_PRC_CI_AS
--
不区分大小写

ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--
区分大小写

修改到字段
还有一种在 设计表中-字段-排序规则-。。。设置区分大小写

数据库
ALTER DATABASE database
COLLATE Chinese_PRC_CS_AS
--
区分大小写

ALTER DATABASE database
COLLATE Chinese_PRC_CI_AS
--
不区分大小写

指定排序规则即可
Windows
排序规则名称
COLLATE子句中指定Windows排序规则名称。Windows排序规则名称由排序规则指示器和比较风格构成。
语法:
<Windows_collation_name> :: =
CollationDesignator_<ComparisonStyle>
<ComparisonStyle> ::=
CaseSensitivity_AccentSensitivity
[_KanatypeSensitive [_WidthSensitive ] ]
| _BIN

参数
CollationDesignator
指定Windows 排序规则使用的基本排序规则。基本排序规则包括:

当指定按字典排序时应用其排序规则的字母表或语言

用于存储非 Unicode 字符数据的代码页。
例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254

CaseSensitivity

CI
指定不区分大小写,CS指定区分大小写。

AccentSensitivity

AI
指定不区分重音,AS指定区分重音。

KanatypeSensitive

Omitted
指定不区分大小写,KS指定区分假名类型。

WidthSensitivity

Omitted
指定不区分大小写,WS指定区分大小写。

BIN

指定使用二进制排序次序。

UPPER (Transact-SQL)

返回小写字符数据转换为大写的字符表达式。

Transact-SQL
语法约定

语法

UPPER ( character_expression )
参数
character_expression
一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。

character_expression
的数据类型必须可隐式转换为 varchar。否则,请使用 CAST 显式转换 character_expression

返回类型
varchar
nvarchar

LOWER
将大写字符数据转换为小写字符数据后返回字符表达式。

语法
LOWER ( character_expression )

参数
character_expression

字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 必须是可以隐性转换为 varchar 的数据类型。否则,使用 CAST 显式转换 character_expression

返回类型
varchar

 

SQL Server 大小写敏感设置

http://blog.csdn.net/bamboopot/article/details/7275650

1.设置SQL脚本大小写不敏感
USE [master] 
GO 
ALTER DATABASE [DatabaseName] COLLATE Chinese_PRC_CI_AI 
GO

 

2.设置大SQL脚本大小写敏感
USE [master] 
GO 
ALTER DATABASE [DatabaseName] COLLATE Chinese_PRC_CS_AI 
GO

 

3.设置参考值
_CI_AI  
不区分大小写、不区分重音、不区分化名类型、不区分宽度       
_CI_AI_WS  
不区分大小写、不区分重音、不区分化名类型、区分宽度       
_CI_AI_KS  
不区分大小写、不区分重音、区分化名类型、不区分宽度       
_CI_AI_KS_WS  
不区分大小写、不区分重音、区分化名类型、区分宽度       
_CI_AS  
不区分大小写、区分重音、不区分化名类型、不区分宽度       
_CI_AS_WS  
不区分大小写、区分重音、   不区分化名类型、区分宽度       
_CI_AS_KS  
不区分大小写、区分重音、区分化名类型、不区分宽度       
_CI_AS_KS_WS  
不区分大小写、区分重音、区分化名类型、区分宽度       
_CS_AI  
区分大小写、不区分重音、  不区分化名类型、不区分宽度       
_CS_AI_WS  
区分大小写、不区分重音、不区分化名类型、区分宽度       
_CS_AI_KS  
区分大小写、不区分重音、区分化名类型、不区分宽度       
_CS_AI_KS_WS  
区分大小写、不区分重音、区分化名类型、区分宽度       
_CS_AS  
区分大小写、区分重音、不区分化名类型、不区分宽度       
_CS_AS_WS  
区分大小写、区分重音、不区分化名类型、区分宽度       
_CS_AS_KS  
区分大小写、区分重音、区分化名类型、不区分宽度       
_CS_AS_KS_WS  
区分大小写、区分重音、区分化名类型、区分宽度 

 

 

 

 

 

*CSCase-Sensitivity缩写):CS 指定区分大小写

 

 CICase-Insensitivity缩写):CI 指定不区分大小写。 

 

 

 

公司常用的说话集为:Chinese_PRC_CI_AS

 

 

 

举例解析 Chinese_PRC_CS_AI_WS   

 

 

 

前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规矩。   

 

排序规矩的后半部份即后缀 含义:   

 

_BIN 二进制排序   

 

_CICS 是否区分大小写,CI不区分,CS区分   

 

_AIAS 是否区分重音,AI不区分,AS区分    

 

_KIKS 是否区分化名类型,KI不区分,KS区分    

 

_WIWS 是否区分宽度WI不区分,WS区分 

 

区分大小写:若是想让斗劲将大写字母和小写字母视为不等,请选择该选项。  

 

区分重音:若是想让斗劲将重音和非重音字母视为不等,请选择该选项。若是选择该选项,斗劲还将重音不合的字母视为不等。  

 

区分化名:若是想让斗劲将片化名和平化名日语音节视为不等,请选择该选项。  

 

区分宽度:若是想让斗劲将半角字符和全角字符视为不等,请选择该选项

 

SQLSERVER大小写敏感问题

http://blog.itpub.net/post/31716/500561

SQL SERVER大小写敏感问题,其实是两个问题:

  • 标识符,例如表名和字段名,是否区分大小写;
  • 字符型字段进行比较时,是否区分大小写。

第一个问题

SQL SERVER数据库的COLLATE属性有关。这个属性的关于大小写敏感子属性的取值有两种:
CI case-insensitive
CS case-sensitive

当创建表等对象时,数据字典中保存的表明和字段名的大小写等同于SQL语句中的大小写。
如果用大写T创建表,字典中保存的表名就是大写T
如果用小写t创建表,字典中保存的表名就是小写t

如果数据库的COLLATECI,则
select * from t
select * from T
查询到的是同一个表,原因在于在将SQL语句中的表名与数据字典中的表名进行比较时,采用了CI比较,也就是忽略了大小写。
btw
此时数据库中不可能同时存在表t和表T

如果数据库的COLLATECS,则
select * from t
select * from T
查询到的是不同的表,原因在于在将SQL语句中的表名与数据字典中的表名进行比较时,采用了CS比较,也就是不忽略了大小写。

此时数据库中可以同时存在表t和表T
如果此时修改库的COLLATE属性从CSCI,执行会失败:
ALTER DATABASE [test] COLLATE Chinese_PRC_CI_AS
消息 1505,级别 16,状态 1,第 1
CREATE UNIQUE INDEX
语句终止,因为发现对象名称'sys.sysschobjs' 和索引名称'nc1' 有重复的键。重复的键值为(0, 1, T)
消息 5072,级别 16,状态 1,第 1
ALTER DATABASE
失败。无法将数据库'test' 的默认排序规则设置为Chinese_PRC_CI_AS

第二个问题

与数据库和字段的COLLATE属性有关。后者的单独设置可以覆盖数据库的全局设置。

库、字段都可以设置collate 属性,但是表不能设置collate 属性

 

查询数据库的大小写敏感设置

use [xxx[
execute sp_server_info '16'
SELECT case when 'A'='a' then 'case_insensitive' else 'case_sensitive' end

mssql名字的大小写敏感

http://www.fastgun.net/jc/article/16/48/2006050919595.htm

MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。一个特例是 Mac OS X,当缺省的 HFS+ 文件系统使用时。然而 Mac OS X 还支持 UFS 卷,那些在 Mac OS X 是大小写敏感的就如他们在任一 Unix 上一样。查看章节 1.8.3 MySQL ANSI SQL92 的扩展

注意:尽管在 Windows 中数据库与表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库和表。下面的查询将不能工作,因为它以 my_table MY_TABLE引用一个表:

mysql>SELECT * FROM my_table WHERE MY_TABLE.col=1;

列名与列的别名在所有的情况下均是忽略大小写的。

表的别名是区分大小写的。下面的查询将不能工作,因为它用 a A引用别名:

mysql>SELECT col_name FROM tbl_name AS a   ->                 WHEREa.col_name = 1 OR A.col_name = 2;

如果记忆数据库和表名的字母大小写有困难,建议采用一个一致一约定,例如总是以小写字母创建数据库和表。

避免这个问题的另一个办法就是以 -O lower_case_table_names=1参数启动 mysqld。缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0

如果lower_case_table_names 1 MySQL 将在存储与查找时将所有的表名转换为小写字线。( MySQL 4.0.2 开始,这个选项同样适用于数据库名。) 注意,当你更改这个选项时,你必须在启动 mysqld前首先将老的表名转换为小写字母。

如果将MyISAM Windows 移动到一个Unix 磁盘中,在某些情况下你可能需要使用 “mysql_fix_extensions”工具来修正指定数据库目录下的文件扩展名(小写字母 “.frm”,大写字母 “.MYI” “.MYD”)“mysql_fix_extensions” 存放在 “scripts” 子目录下。

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Sql Server排序规则的简介、选择、应用
LocalDB数据库修改排序规则,修复汉字变问号
SQL Server 2005数据库的排序规则
[分享]collate Chinese_PRC_CS_AI_WS的意思
查询区分大小写
SQL SERVER中collate的含义
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服