日期:2014-05-17  浏览次数:20492 次

SQL2008排序规则错误
我在管理器里面看了,数据库默认排序是Chinese_Taiwan_Stroke_CI_AS,所有表的默认排序也是Chinese_Taiwan_Stroke_CI_AS

表结构(在过程里面自动创建):

exec ('CREATE TABLE [dbo].['+@tb_name+'] (
[SerialNo] [numeric](18, 0) IDENTITY (1, 1) not NULL ,
[ModelName] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[BarcodeNo] [varchar] (30) COLLATE Chinese_PRC_CI_AS not NULL ,
[Station] [varchar] (5) COLLATE Chinese_PRC_CI_AS not NULL ,
[Information] [varchar] (4096) COLLATE Chinese_PRC_CI_AS not NULL ,
[Upload_Date] [datetime]  default getdate() not NULL 
) ON [PRIMARY]')


刚开始在SQL2000上运行的时候没有问题(没加COLLATE Chinese_PRC_CI_AS),现在换到SQL2008上就一直提示这个问题了。我是要按Upload_date desc排序的。
SQL2000:

select * from Y2013_2 where 1=1  and BarcodeNo='CC16711214' and Station='1528' and Upload_Date >='2010-01-12' and Upload_Date <='2013-07-03' union select * from Y2013_1 where 1=1  and BarcodeNo='CC16711214' and Station='1528' and Upload_Date >='2010-01-12' and Upload_Date <='2013-07-03' order by upload_date desc 


SQL2008:

select * from Y2013_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2013_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2012_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2012_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2011_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2011_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2010_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2010_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2009_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2009_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2008_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2008_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2007_2 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS union select * from Y2007_1 where 1=1  and BarcodeNo='1234' COLLATE Chinese_PRC_CI_AS