ORDER BY CASE Month WHEN '一月' THEN 1 WHEN '二月' THEN 2 WHEN '三月' THEN 3 WHEN '四月' THEN 4 WHEN '五月' THEN 5 WHEN '六月' THEN 6 WHEN '七月' THEN 7 WHEN '八月' THEN 8 WHEN '九月' THEN 9 WHEN '十月' THEN 10 WHEN '十一月' THEN 11 WHEN '十二月' THEN 12 END…
在今天的文章里,我想谈下SQL Server里非常有争议和复杂的话题:ORDER BY子句的歧义性. 视图与ORDER BY 我们用一个非常简单的SELECT语句开始. -- A very simple SELECT statement SELECT * FROM Person.Person ORDER BY LastName GO 从刚才列出的代码你可以看到,我们只想从Person.Person表以LastName列排序返回记录.因为我们想能尽可能简单的重用那个SQL语句,最后我们把它放到视图…
假如SQL Server数据库中现在有Book表如下 CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [CreateTime] [datetime] NULL, CONSTRAINT [PK_Book] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,…
转自:http://blog.51cto.com/jimshu/1095780 概念与详情请参考:字符编码与排序规则:https://www.cnblogs.com/gered/p/9145123.html 一.修改SQL Server服务器(实例)的排序规则 以下实验使用了SQL Server 2008 R2的默认实例,将Chinese_PRC_CI_AS修改成SQL_Latin1_General_CP1_CI_AS. 1. 停止SQL Server实例服务 2. 打开“命令提示符”,转到SQ…
背景 最近我们在azure portal 上开了几台英文版的数据库服务器,因默认是开启就安装好对应的数据库,所以存在一个实例排序规则的问题,需把整个实例都调整成Chinese_PRC_CI_AS,避免后续出现字符乱码之类的问题.之前只是知道可以调整,未实际操作过,这次把实际操作步骤记录一下,便于我们后续查阅.   环境情况 Microsoft SQL Server 2012 (SP3-CU8) (KB4013104) - 11.0.6594.0 (X64)  Mar 15 2017 10:52:…
看似很简单是不是? 单列排序,没有任何问题 select * from tableA where age>1 order by age /*后面可以跟上ASC.DESC,默认是ASC升序排列*/ 多列排序中的坑 如果是多个列排序呢?注意这里的age有很多一样的 select * from tableA where id>1 order by age, name desc 上面的写法是达不到预想的效果的,原因就在于,如果指定了多个排序列,而且还指定了降序排列,那么就需要为每一个列指定降序排列,上…
操作结果集 为了配合测试,特地建了两个表,并且添加了一些测试数据,其中重复记录为东吴的人物. 表:Person_1魏国人物 表:Person_2蜀国人物 A.Union形成并集 Union可以对两个或多个结果集进行连接,形成“并集”.子结果集所有的记录组合在一起形成新的结果集.  1.限定条件 要是用Union来连接结果集,有4个限定条件. (1).子结果集要具有相同的结构. (2).字结果集的列数必须相同. (3).子结果集对应的数据类型必须可以兼容. (4).每个子结果集不能包含order…
今天玩BCP导入数据的时候,有文件格式,有中文字符串问题……以下是历程,和大家分享一下,希望不要走我的弯路 主要那个表是一个翻译表,一个文件里面内涵几十种语言,所以很容易发现问题. 0.使用最常用的语句导数据 bcp DB.TBOwner.TB in File -S -U -P -r -t -c  来到,死活岛导不进去 1.打开文件,首先发现文件编码使用的是UTF-16 ……难怪死活不能导进去.然后把文件转换成UTF-8 ,不报错了!而且可以导进去了!! 2.开心的时间不到30秒,一查数据……全…
例如查询 2012-1-5 到 2012-11-3 之间所有的月份 declare @begin datetime,@end datetime set @begin='2012-1-5' set @end='2012-11-3' declare @months int set @months=DATEDIFF(month,@begin,@end) select convert(varchar(7),DATEADD(month,number,@begin) ,120) AS 月份 from mas…
今天遇到一个奇怪的问题,项目突然要从mysql切换到sql server数据库,包含order by 子句的嵌套子查询报错. 示例:select top 10 name,age,sex from ( select * from user order by id desc) temp; 在mysql数据库没有问题,但是sql server中报错: [Err] 42000 - [SQL Server]除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.…