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)

解决方案 »

  1.   

    上面三个表列的排序是你的表所在数据库的排序查看当前你的表所在数据库的排序规则:
    SELECT CONVERT(char, DATABASEPROPERTYEX('数据库名', 'collation'))
    --结果:Chinese_PRC_CI_AS查出排序规则后,指定排序规则
    declare @tb table(col varchar(10) COLLATE Chinese_PRC_CI_AS)
      

  2.   

    sp_help '表名' 有一列 collation 值 为Chinese_PRC_CI_AS(假设),
    如果两个表的排序规则不同,则会造成排序冲突解决方案:
    select a.*,b.* from t1 a left t2 b on a.关键字=b.关键字 collate Chinese_PRC_CI_AS
    即可解决
      

  3.   

    bill024(捞猴子的月亮) ( ) 信誉:100    Blog   加为好友  2007-05-12 10:18:12  得分: 0  
     
     
       上面三个表列的排序是你的表所在数据库的排序查看当前你的表所在数据库的排序规则:
    SELECT CONVERT(char, DATABASEPROPERTYEX('数据库名', 'collation'))
    --结果:Chinese_PRC_CI_AS查出排序规则后,指定排序规则
    declare @tb table(col varchar(10) COLLATE Chinese_PRC_CI_AS)
      
     
    ========不是的,只有t2表是和数据库相同的,t3表应该是和tempdb数据排序一样,t1表估计是和master数据库排序相同(但不改确定)
    第二个问题指定排序代码方法不能通用,假如代码放在另一个不同排序的数据库执行就会出错了.
    我要的结果是让上述表变量里的字段总是和它所在数据库的排序一样.