msSql中减号"-"的问题?
T表的F字段的三条记录中保存以下三个值:A#A,AAA,A-B
执行:select f from t order by f 时的结果却是:A#A,AAA,A-B
为什么会忽略了减号("-")???
问题点数:50、回复次数:20Top
1 楼AiQun(爱麇)回复于 2004-11-03 22:24:18 得分 0
print case when 'AAA'>'A-B' then 'true' else 'false' end
返回的是false?Top
2 楼hdhai9451(☆新人类☆)回复于 2004-11-03 22:25:37 得分 0
因為它本來就是一個字符串嘛Top
3 楼AiQun(爱麇)回复于 2004-11-03 22:36:58 得分 0
to hdhai9451(※★開拓者...糊涂中☆※)
你没理解我的意思还是在混分?
用人脑比较一下这三个字符串(由小到大排序),结果应该是:A#A,A-B,AAA
但SQL语句的结果却是:A#A,AAA,A-B
Top
4 楼yjdn(人形机器)回复于 2004-11-03 22:44:01 得分 0
select '#' as f
union
select 'A'
union
select '-'
得到的是:-,#,A, 它们的ascii值分别是:#<-<A,确实有点怪了,
不知道它是根据什么来排序的Top
5 楼hdhai9451(☆新人类☆)回复于 2004-11-03 22:46:40 得分 0
不好意思﹐是我稿錯了Top
6 楼zjcxc(邹建)回复于 2004-11-03 22:49:18 得分 0
-在SQL中是做特殊处理的,对含有-的字符串排序会产生问题.Top
7 楼zjcxc(邹建)回复于 2004-11-03 22:49:57 得分 0
select f from t order by f collate chinease_bin --这样应该就没问题了Top
8 楼Amuclan(西绪弗斯)回复于 2004-11-03 22:52:35 得分 0
关注!Top
9 楼Amuclan(西绪弗斯)回复于 2004-11-03 22:53:43 得分 0
老大就是老大 真是出手不凡!! 长见识Top
10 楼yjdn(人形机器)回复于 2004-11-03 22:59:59 得分 0
是这个吧:collate Chinese_PRC_BINTop
11 楼Amuclan(西绪弗斯)回复于 2004-11-03 23:00:55 得分 0
更正一下 应该是
select f from t order by f collate Chinese_PRC_BINTop
12 楼Amuclan(西绪弗斯)回复于 2004-11-03 23:01:30 得分 0
我不是马甲:)Top
13 楼zjcxc(邹建)回复于 2004-11-03 23:02:45 得分 0
是写错了Top
14 楼Amuclan(西绪弗斯)回复于 2004-11-03 23:02:52 得分 0
顺便问一下 怎样让MS SQL区分大小写?Top
15 楼yjdn(人形机器)回复于 2004-11-03 23:03:32 得分 15
Chinese_PRC_BIN 二进制顺序、用于 936(简体中文)字符集。
COLLATE Chinese_PRC_CI_AS 字典顺序、不区分大小写、用于 936(简体中文)字符集。
用Chinese_PRC_BIN这个二进制排序也确实是一种解决方法
果然是老大。
测试
select f from (select '#' as f
union
select 'A'
union
select '-') t order by f collate Chinese_PRC_BIN
--结果
#
-
A
Top
16 楼yjdn(人形机器)回复于 2004-11-03 23:06:46 得分 0
用这个排序是用于中文的区分大小写的
Chinese_PRC_CS_ASTop
17 楼Amuclan(西绪弗斯)回复于 2004-11-03 23:11:02 得分 0
我是想问 建表时如何建一个区分大小写,不重复且非空的字段?
比如这个字段可以插入
a
A
aaaaaa
AAAAAa
而不会因为重复被拒绝Top
18 楼zjcxc(邹建)回复于 2004-11-03 23:12:45 得分 15
--建表是一样嘛,加上排序规则
create table 表(字段 varchar(10) collate Chinese_PRC_CS_AS primary key)Top
19 楼Amuclan(西绪弗斯)回复于 2004-11-03 23:33:56 得分 20
谢谢 老大!
现在明白了:
CaseSensitivity
CI 指定不区分大小写,CS 指定区分大小写。
AccentSensitivity
AI 指定不区分重音,AS 指定区分重音。
BIN
指定使用二进制排序次序。
Top
20 楼Amuclan(西绪弗斯)回复于 2004-11-03 23:35:22 得分 0
SQL Server联机丛书:
mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ca-co_5ell.htmTop
相关问题
- 后缀表达式中如何区别负号和减号喃?
- 如何使得树形控件中的一个没有子项目的目录前面显示为减号?
- 请问:在html中 %2B 对应于加号(+) ,那减号(-)对应的是什么呢?
- 请问:资源管理器中左边的小加号和小减号以及虚线是怎样加上的?谢谢
- 如何使得树形控件中的一个没有子项目的目录前面显示为减号或不显示'+'和'-'?
- EditMask:#####0.00怎样禁止输入减号?
- #define M 13, b = M-a-b,结果减号不起作用, b=M???
- 如何让文本框输入数字和小数点,还有减号!谢谢
- 怎样把微调控件的上下箭头图案改成加号减号图案?
- 奇怪问题--为什么我的ie标题栏后面总是自动的加上一个减号????




