日期:2014-05-18  浏览次数:20454 次

关于排序几个问题的探讨
declare   @tb   t1(col   varchar(20))

create   table   t2(col   varchar(20))

create   table   #t3(col   varchar(20))

请问上面三个表里的列是什么排序?

如果我不知道当前数据库的排序规则是什么时,但我建表变量时,想指定列为当前数据库的排序,该怎么写?类似下面语句...
declare   @tb   table(col   varchar(10)   collate   database   default)


------解决方案--------------------
帮顶一下
------解决方案--------------------
上面三个表列的排序是你的表所在数据库的排序

查看当前你的表所在数据库的排序规则:
SELECT CONVERT(char, DATABASEPROPERTYEX( '数据库名 ', 'collation '))
--结果:Chinese_PRC_CI_AS

查出排序规则后,指定排序规则
declare @tb table(col varchar(10) COLLATE Chinese_PRC_CI_AS)
------解决方案--------------------
sp_help '表名 ' 有一列 collation 值 为Chinese_PRC_CI_AS(假设),
如果两个表的排序规则不同,则会造成排序冲突解决方案:
select a.*,b.* from t1 a left t2 b on a.关键字=b.关键字 collate Chinese_PRC_CI_AS
即可解决

------解决方案--------------------
mark
------解决方案--------------------
ding