以前的库,SQL2000的,排序规则是Compatibility_198_804_30001,现在想给升级到2005,但是在2005中,这个排序规则可以使用,在转出脚本时会提示,找不到排序规则Compatibility_198_804_30001 想给换个排序规则,但是Compatibility_198_804_30001原来有个特性,他的字段数据是大小写敏感的,也就是说字段值'AA' <> 'Aa',而且他的所有字段名和表名是大小写不敏感的,也就是说select COL1 from TAB1=select Col1 from Tab1,原来程序的表名、字段名大小写混用非常严重。现在的排序规则找不到这个特性的 该怎么办呢?谁帮我出出主意
--
转之前先换个排序,然后把脚本的排序全部替换为你需要的排序.
--
转之前先换个排序,然后把脚本的排序全部替换为你需要的排序.
或者有没有人知道Compatibility_198_804_30001的来历
或者有没有人知道Compatibility_198_804_30001会不会以后不可用
mengmou
等 级:
发表于:2008-01-16 11:57:5814楼 得分:0
数据是否大小写敏感跟表的字段的排序规则有关,如果该字段没有外键引用,索引等对象,可以修改字段的排序规则
字段名,表名是否大小写敏感跟数据库的排序规则有关,如果该数据库中没有计算列等依赖数据库排序规则的对象,可以修改数据库的排序规则.
----------------------------------
我试过字段排序规则与数据库的排序规则不同的设置,但是还是有诸多不便:
1、产生临时表不能不用COLLATE或者使用COLLATE Database_Default
2、增加表必须制定字段排序规则总之以后如果不小心就会踩到地雷
COLLATE Compatibility_198_804_30001
GOUSE DBCREATE TABLE dbo.tb(id int)
GOALTER TABLE dbo.TB ADD col varchar(10)
GOINSERT dbo.tb(col)
VALUES('a')SELECT * FROM dbo.tb
WHERE col = 'A'
SELECT * FROM dbo.TB
WHERE col = 'a'
GO
确实实现了:
数据区分大小写
对象不区分大小写因为改表和查询, 无论大小写均可以
但查询只有第二个查询出数据
或者有没有人知道Compatibility_198_804_30001的来历
或者有没有人知道Compatibility_198_804_30001会不会以后不可用
http://support.microsoft.com/kb/270042
198 排序次序 十进制数字 二进制顺序、用于 936(简体中文)字符集。
804 区域设置 ID (LCID) 十六进制数字 0x804=2052 简体中文
30001 Unicode 比较样式 十六进制数字 0x30001 = 196609 (例, 不区分重音敏感, 假名不区分,宽度不区分) 对应排序规则 Chinese_PRC_BIN可惜Chinese_PRC_BIN在数据上是一样的,在对象名上,也是大小写敏感的