SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
一、实例介绍
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语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写的更多相关文章
- 常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释)
		
常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释) 一. 增 INSERT INTO 数据表(字段,字段,-) VALUES(值,值-); INSERT INTO emp(empno, ...
 - 【hibernate spring data jpa】执行了save()方法  sql语句也执行了,但是数据并未插入数据库中
		
执行了save()方法 sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...
 - sql语句之随机查询记录和批量插入--基于mysql
		
本周遇到了好几次数据库方面的问题,一个是上一篇文章提到的因为要修改数据结构引起的在表间复制字段的需求,另一个就是这篇文章要写的:1,从某个数据表中按照某个字段不重复的随机选取几百条记录:2,然后把这些 ...
 - SQL语句优化、mysql不走索引的原因、数据库索引的设计原则
		
SQL语句优化 1 企业SQL优化思路 1.把一个大的不使用索引的SQL语句按照功能进行拆分 2.长的SQL语句无法使用索引,能不能变成2条短的SQL语句让它分别使用上索引. 3.对SQL语句功能的拆 ...
 - 如何通过PhpMyAdmin批量删除MYSQL数据库数据表
		
使用这个方法前,强烈建议先备份整个数据库.至于怎么备份?你不会么?在本文下方留言吧. 具体方法:复制下面的php执行语句,保存为sql.php文件(注意配置数据库名称.密码.数据表头),通过ftp上传 ...
 - 批量修改mysql数据库引擎
		
数据库表中部分是MyISAM引擎,部分是InnoDB.由于MyISAM不支持事务,所以需要全部修改为InnoDB引擎. (下面例子SQL语句中 ecsoft 为数据库名) 通过以下查询可以看到数据库中 ...
 - Oracle数据库在给表添加字段的sql中用comment报错
		
原因:不同于mysql,Oracle数据库在添加表字段时不能直接用comment,而是单独写一个sql语句,如下: alter table SYS_USER add SENDMSG_LASTTIME ...
 - SQL语句大全从基础到熟练(不含数据库高端操作)日常用户 三、
		
前言 昨天晚上回家忘记带钥匙导致在楼下站街三小时,鬼天气热的不要不要的然后我就在车里坐了会之后就.....zzZZ,哈哈睡的挺香的毕竟累了一天了 上两篇文章都是介绍的语法语句,本篇文章介绍下函数的使用 ...
 - SQL语句判断数据库、表、字段是否存在
		
from master..sysdatabases where name='TestDB') print 'TestDB存在'else print 'TestDB不存在' --判断表[Te ...
 
随机推荐
- java I/O流类概述
			
java I/O流类概述
 - JAVAEE——SSH项目实战04:联系人添加、列表显示和修改
			
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7159337.html 一.联系人添加 1.添加页面设计 linkman/list. ...
 - 掩码计算工具netmask
			
掩码计算工具netmask 在网络扫描和防火墙配置中,经常需要计算IP地址范围和对应的掩码.为了简化这个过程,Kali Linux预置了一个掩码计算工具netmask.该工具不仅可以根据IP地址范 ...
 - 1006 Sign In and Sign Out (25)(25 point(s))
			
problem At the beginning of every day, the first person who signs in the computer room will unlock t ...
 - android  打开 res raw目录 中 数据库文件
			
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 安卓不能直接打开 res raw 中的 数据库 文件. 通过 资源 获取资源 方法 , ...
 - 【二分】【动态规划】Gym - 101156E - Longest Increasing Subsequences
			
求最长上升子序列方案数. 转载自:http://blog.csdn.net/u013445530/article/details/47958617,如造成不便,请博主联系我. 数组A包含N个整数(可能 ...
 - 【dijkstra优化/次短路径】POJ3255-Roadblocks
			
[题目大意] 给出一张无向图,求出从源点到终点的次短边. [思路] 先来谈谈Dijkstra的优化.对于每次寻找到当前为访问过的点中距离最短的那一个,运用优先队列进行优化,避免全部扫描,每更新一个点的 ...
 - [BZOJ5109]大吉大利,晚上吃鸡!
			
[BZOJ5109]大吉大利,晚上吃鸡! 题目大意: 一张\(n(n\le5\times10^4)\)个点\(m(m\le5\times10^4)\)条边的无向图,节点编号为\(1\)到\(n\),边 ...
 - 【对比分析五】CSS阻塞和JS阻塞
			
js 的阻塞特性: 所有浏览器在下载 JS 的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到 JS 下载.解析.执行完毕后才开始继续并行下载其他资源并呈现内容.为了提高用户体验,新 ...
 - BZOJ 3875: [Ahoi2014]骑士游戏 spfa dp
			
3875: [Ahoi2014]骑士游戏 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3875 Description [故事背景] 长 ...