sql2k5的collate问题

有一DB,名为ABC。其中有个表,叫Ta_ABC
在collate为Japanese_CI_AS的情况下,执行select * from ta_abc ----(请注意表的大小写)
可以将此表数据查处
将此DB的collate改为Chinese_PRC_CI_AS , 执行select * from ta_abc
错误提示:无效ta_abc。

问题:sql执行语句 是否 区分大小写 是不是与排序规则有关?
...全文
71 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2010-07-13
  • 打赏
  • 举报
回复
sql执行语句 是否 区分大小写 是不是与排序规则有关?

--息息相关
ok了,结贴。
以后先看CI,CS。
如果还像今天的,就换换collate吧。
没办法,电脑神奇啊
[Quote=引用 12 楼 xys_777 的回复:]

[sql server] sql server的COLLATE设置( 字符集 )
http://blog.csdn.net/xys_777/archive/2010/07/13/5731928.aspx
[/Quote]
恩。是这个问题。但两个都是CI的。
to 8L:连接不会有错。
9L:没看太懂,标识符的排序规则与DB属性中的排序规则没有区别码?
10L:我将中文的改为日文排序的就ok了。但两个都有CI。
永生天地 2010-07-13
  • 打赏
  • 举报
回复
[sql server] sql server的COLLATE设置( 字符集 )
http://blog.csdn.net/xys_777/archive/2010/07/13/5731928.aspx
[Quote=引用 7 楼 wufeng4552 的回复:]

引用 6 楼 cxue2008 的回复:
但我这两个都有CI,为什么有一个却需要排序?

什么排序?
[/Quote]
抱歉,说错了。是【为什么有一个却区分大小写】
feilniu 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cxue2008 的回复:]

但我这两个都有CI,为什么有一个却需要排序?
[/Quote]

既然修改前后都是CI,那表名应该是都不区分大小写的。找找看是不是别的原因。
feilniu 2010-07-13
  • 打赏
  • 举报
回复
问题:sql执行语句 是否 区分大小写 是不是与排序规则有关?
====
标识符的排序规则取决于定义标识符的级别为实例级对象(如登录名和数据库名)的标识符指派的是实例的默认排序规则为数据库对象(如表、视图和列名)的标识符指派的是数据库的默认排序规则。连接上下文与一个数据库关联后,可以创建变量、GOTO 标签、临时存储过程和临时表;该上下文切换到其他数据库时,可以引用它们。因此,变量、GOTO 标签和临时表的标识符使用实例的默认排序规则
feilniu 2010-07-13
  • 打赏
  • 举报
回复
有一DB,名为ABC。其中有个表,叫Ta_ABC
在collate为Japanese_CI_AS的情况下,执行select * from ta_abc ----(请注意表的大小写)
可以将此表数据查处
将此DB的collate改为Chinese_PRC_CI_AS,(这个时候你的这个会话连接的还是ABC数据库吗?) 执行select * from ta_abc
错误提示:无效ta_abc。
水族杰纶 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cxue2008 的回复:]
但我这两个都有CI,为什么有一个却需要排序?
[/Quote]
什么排序?
但我这两个都有CI,为什么有一个却需要排序?
水族杰纶 2010-07-13
  • 打赏
  • 举报
回复
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集.如:
Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分

默认情况下一般不区分大小写
在安装的时候可以选择
也可以在安装之后再修改等
1L:但我这次忙活了一上午才发现的 汉的教训。。 这个中文的排序好像区分大小写。。
而按照【CI 指定不区分大小写,CS 指定区分大小写。】这个来讲,这两个排序都有CI。
这是??

在以前的工作 中,一直以为sql无论在什么时候都是区分大小写的 。这个问题还第一次遇到,想确认下哈。

2L:能详细说说吗?
黄_瓜 2010-07-13
  • 打赏
  • 举报
回复
CS   区分大小写
CI 不区分

水族杰纶 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 cxue2008 的回复:]
有一DB,名为ABC。其中有个表,叫Ta_ABC
在collate为Japanese_CI_AS的情况下,执行select * from ta_abc ----(请注意表的大小写)
可以将此表数据查处
将此DB的collate改为Chinese_PRC_CI_AS , 执行select * from ta_abc
错误提示:无效ta_abc。

问题:sql执行语句 是否 区分大小写 ……[/Quote]
有关
永生天地 2010-07-13
  • 打赏
  • 举报
回复
CI是不区分大小写的

SQL 排序规则名称
为 SQL 排序规则指定排序规则名称的单个字符串。

语法
< SQL_collation_name > :: =

SQL_SortRules[_Pref]_CPCodepage_<ComparisonStyle>

<ComparisonStyle> ::=
_CaseSensitivity_AccentSensitivity | _BIN

参数
SortRules

标识字母表或语言的字符串,当指定按字典排序时应用该字母表或语言的排序规则。例如 Latin1_General 或波兰语。

Pref

指定大写字母优先。

Codepage

指定标识排序规则所使用的代码页的 1 至 4 个数字的号码。CP1 指定代码页 1252,对于所有其它代码页指定完整代码页号码。例如,CP1251 指定代码页 1251,CP850 指定代码页 850。

CaseSensitivity

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

AccentSensitivity

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

BIN

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

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧