一、实例介绍

SQL语句大小写到底是否区分呢?我们先从下面的这个例子来看一下:

例:

--> 创建表,插入数据:

declare @maco table (number int,myvalue varchar(2))

insert into @maco select 1,'aa' union all

select 2,'Aa' union all

select 3,'aA' union all

select 4,'AA'

--不区分大小写

select * from @maco WHERE nn='aa'

--区分大小写

select  * from @maco WHERE nn='aa' collate Chinese_PRC_CS_AI

  

注:我用的是Sql Server 2005。

从上面的例子我们可以看到第一句不区分,而第二句区分。可是每个语句不能都加上个collate Chinese_PRC_CS_AI吧?

我们可以这样,看下面的例子:

例:

--不区分大小写

ALTER TABLE My_table ALTER Column colname nvarchar(100) collate Chinese_PRC_CI_AS     

--区分大小写  

ALTER TABLE My_table ALTER Column colname nvarchar(100) collate Chinese_PRC_CS_AS

  

从上面的例子我们可以看到第一句不区分,而第二句区分。可是我们不能每个表都进行一下修改吧?

我们可以再这样,看下面的例子:

例:

--不区分大小写  

ALTER DATABASE databasename collate Chinese_PRC_CI_AS    

--区分大小写   

ALTER DATABASE databasename collate Chinese_PRC_CS_AS

  

批量修改数据库中所有表内字段大小写敏感

如:

DECLARE @collate nvarchar(100);
DECLARE @table nvarchar(255);
DECLARE @column_name nvarchar(255);
DECLARE @column_id int;
DECLARE @data_type nvarchar(255);
DECLARE @max_length int;
DECLARE @row_id int;
DECLARE @sql nvarchar(max);
DECLARE @sql_column nvarchar(max);
DECLARE @is_nullable int;
DECLARE @nullornot nvarchar(255); SET @collate = 'Chinese_PRC_CS_AS'; --不区分大小写: Chinese_PRC_CI_AS 区分大小写 :Chinese_PRC_CS_AS DECLARE local_table_cursor CURSOR FOR SELECT [name]
FROM sysobjects
WHERE OBJECTPROPERTY(id, N'IsUserTable') = 1 OPEN local_table_cursor
FETCH NEXT FROM local_table_cursor
INTO @table WHILE @@FETCH_STATUS = 0
BEGIN DECLARE local_change_cursor CURSOR FOR SELECT ROW_NUMBER() OVER (ORDER BY c.column_id) AS row_id
, c.name column_name
, t.Name data_type
, c.max_length
, c.column_id
, c.is_nullable
FROM sys.columns c
JOIN sys.types t ON c.system_type_id = t.system_type_id
LEFT OUTER JOIN sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE c.object_id = OBJECT_ID(@table)
ORDER BY c.column_id OPEN local_change_cursor
FETCH NEXT FROM local_change_cursor
INTO @row_id, @column_name, @data_type, @max_length, @column_id,@is_nullable WHILE @@FETCH_STATUS = 0
BEGIN IF (@max_length = -1) OR (@max_length > 4000) SET @max_length = 4000;
IF (@is_nullable = 1) SET @nullornot=' not null' ELSE SET @nullornot='' IF (@data_type LIKE '%char%')
BEGIN TRY
SET @sql = 'ALTER TABLE ' + @table + ' ALTER COLUMN ' + @column_name + ' ' + @data_type + '(' + CAST(@max_length AS nvarchar(100)) + ') COLLATE ' + @collate +' ' +@nullornot
PRINT @sql
EXEC sp_executesql @sql
END TRY
BEGIN CATCH
PRINT 'ERROR: Some index or constraint rely on the column ' + @column_name + '. No conversion possible.'
PRINT @sql
END CATCH FETCH NEXT FROM local_change_cursor
INTO @row_id, @column_name, @data_type, @max_length, @column_id,@is_nullable END CLOSE local_change_cursor
DEALLOCATE local_change_cursor FETCH NEXT FROM local_table_cursor
INTO @table END CLOSE local_table_cursor
DEALLOCATE local_table_cursor GO

  

 

二、参数介绍

Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

排序规则的后半部份(即后缀)含义:

_BIN 二进制排序_CI(CS) 是否区分大小写:CI不区分,CS区分

_AI(AS) 是否区分重音:AI不区分,AS区分   

_KI(KS) 是否区分假名类型:KI不区分,KS区分 

_WI(WS) 是否区分宽度:WI不区分,WS区分

三、整体介绍

在安装SQL时,我们可以选择区分大小写或安装完以后重建mastar,再选择区分大小

下面是rebuildm.exe 的路径:

C:/Program  Files/Microsoft  SQL Server/80/Tools/Binn/rebuildm.exe

若要修改排序规则,按照上面的参数设置即可。

若只修改一个表,用ALTER   TABLE语句

若修改一个库的默认排序规则,用ALTER DATABASE语句

若修改整个服务器的默认排序规则,用Rebuildm.exe重建master库

SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写的更多相关文章

  1. 常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释)

    常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释) 一. 增 INSERT INTO 数据表(字段,字段,-) VALUES(值,值-); INSERT INTO emp(empno, ...

  2. 【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中

    执行了save()方法  sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...

  3. sql语句之随机查询记录和批量插入--基于mysql

    本周遇到了好几次数据库方面的问题,一个是上一篇文章提到的因为要修改数据结构引起的在表间复制字段的需求,另一个就是这篇文章要写的:1,从某个数据表中按照某个字段不重复的随机选取几百条记录:2,然后把这些 ...

  4. SQL语句优化、mysql不走索引的原因、数据库索引的设计原则

    SQL语句优化 1 企业SQL优化思路 1.把一个大的不使用索引的SQL语句按照功能进行拆分 2.长的SQL语句无法使用索引,能不能变成2条短的SQL语句让它分别使用上索引. 3.对SQL语句功能的拆 ...

  5. 如何通过PhpMyAdmin批量删除MYSQL数据库数据表

    使用这个方法前,强烈建议先备份整个数据库.至于怎么备份?你不会么?在本文下方留言吧. 具体方法:复制下面的php执行语句,保存为sql.php文件(注意配置数据库名称.密码.数据表头),通过ftp上传 ...

  6. 批量修改mysql数据库引擎

    数据库表中部分是MyISAM引擎,部分是InnoDB.由于MyISAM不支持事务,所以需要全部修改为InnoDB引擎. (下面例子SQL语句中 ecsoft 为数据库名) 通过以下查询可以看到数据库中 ...

  7. Oracle数据库在给表添加字段的sql中用comment报错

    原因:不同于mysql,Oracle数据库在添加表字段时不能直接用comment,而是单独写一个sql语句,如下: alter table SYS_USER add SENDMSG_LASTTIME ...

  8. SQL语句大全从基础到熟练(不含数据库高端操作)日常用户 三、

    前言 昨天晚上回家忘记带钥匙导致在楼下站街三小时,鬼天气热的不要不要的然后我就在车里坐了会之后就.....zzZZ,哈哈睡的挺香的毕竟累了一天了 上两篇文章都是介绍的语法语句,本篇文章介绍下函数的使用 ...

  9. SQL语句判断数据库、表、字段是否存在

    from master..sysdatabases where name='TestDB')    print 'TestDB存在'else    print 'TestDB不存在' --判断表[Te ...

随机推荐

  1. SQL注入备忘录

    备忘录(一) 拿起小本本记下常考知识点. 常用连接词 and && %23%23 且 or || %7c%7c 或 xor 非 Access 数据库: 只能爆破表名.列名获取数据.无法 ...

  2. Python 编程:从入门到实战 读书笔记

    1..title()  每个单词首字母大写     .upper()  所有字母大写     .lower()  所有字母小写 2. \t 空白   转义字符只能用在""内     ...

  3. php操作mongodb or查询这样写!

    $where['$or'] = [ ['id' => ['lt'=>0]], ['id2' => ['lt'=>1]] ]; 这个是查询 id>0 或者id2>1的 ...

  4. read file into shell vars

    test.ksh value=$(<rosstest.txt)echo $value

  5. dSploitzANTI渗透教程之修改MAC地址与Wifi监听器

    dSploitzANTI渗透教程之修改MAC地址与Wifi监听器 dSploitzANTI基本配置 渗透测试是一种安全性较大的工作.所以,在实施渗透测试之前进行一些简单设置.如修改MAC地址.了解网络 ...

  6. Linux命令学习<不断更新>

    没有系统的学习过Linux命令,遇到了就学习一下,慢慢积累. 1.echo 命令,学习网站『https://linux.cn/article-3948-1.html』. echo单词有回声.共鸣的意思 ...

  7. android studio 汉化 个性化 美化 快速操作项目 目录

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 汉化包 百度云盘 下载地址:https://pan.baidu.com/s/1pLjwy ...

  8. 冒泡排序(初级版)之C++实现

    冒泡排序(初级版)之C++实现 一.源代码:BubbleSortLow.cpp /*冒泡排序思想: 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面: 一轮比 ...

  9. 热爱编程,热爱生活,快速适应IT新技术

    现在新技术层出不穷,我们没有那么多时间去深入学习每一门.对于大多数技术,我们只需要搞懂概念部分,从宏观上了解一下,决定我们要不要深入地去学习它.有了这些了解,就能轻松地与别人聊天了,也可以为以后技术选 ...

  10. BZOJ 2142 礼物 组合数学 CRT 中国剩余定理

    2142: 礼物 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1450  Solved: 593[Submit][Status][Discuss] ...