T-SQL中的Select查询(续3)

原创 2006年06月11日 12:37:00

T-SQL中的Select查询(续)
SQL可以按照多个列来排序,并且用来排序的列不必是select语句要返回的结果列,所以排序列的方式具有很大的灵活性。如果确实需要对数据进行排序,那么就应当利用ordre by子句来实现它,这是一种好的开发习惯。
(1)    使用列名指定排序顺序
SELECT FirstName,LastName
FROM dbo.Customer
ORDER BY LastName,FirstName
(2)    使用表达式指定排序顺序
SELECT LastName +’,’ +FirstName AS FullName
FROM dbo.Customer
ORDER BY LastName +’,’ +FirstName
 order by子句使用表达式,可以解决一些令人头疼的问题。如:在下面的例子中,如果标题中包含有前导“The”,那么case表达式将把它从标题中去掉,并利用处理以后的结果来排序:
SELECT Title,Len(FableText) AS TextLength
FROM Fable
ORDER BY
     CASE
        WHEN SubString(Title,1,3)=’The’
           THEN SubString(Title,5,Len(Title)-4)
     ELSE Title
END
执行结果如下:
Title                                    TextLength
     --------------------------------------------    -------------------------------------------- 
     Androcles                                    1370
     The Ant and the Chrysalis                       1087
     The Ants and the Grasshopper                    456
     The Ass in the Lion’s Skin                       465
     The Bald Knight                               360
     The Boy and the Filberts                         435
     The Bundle of Sticks                            551
     The Crow and the Pitcher                        491
     … …                                        … …
(3)    使用列别名指定排序顺序
   在按照表达式排序时应当首选这种方法,因为它使得代码更容易读了。在下面的例子中,不仅使用了这种方法,而且还为其指定了降序的排序方式,而不是默认的升序排序:
   SELECT LastName +’,’ +FirstName AS FullName
      FROM dbo.Customer
      ORDER BY FullName DESC
 注意:虽然可以在order by子句中使用别名,但却不能在where子句中使用别名。这是因为在逻辑上where子句是在查询刚开始的时候执行的,此时还没有完成建立结果列及其别名的工作,因而不能使用别名;而order by子句却是最后一步执行的逻辑操作,此时结果列及其别名都已经创建了。
(4)    使用列的位置序号指定排序顺序
我不推荐大家使用这种方法,因为如果在select语句中改变了结果列的排列顺序,order by子句就会按照不同的列进行排序了。但是,我会在复杂的并查询中使用列的序号来指定排序的顺序。如:
SELECT LastName +’,’ +FirstName AS FullName
FROM dbo.Customer
ORDER BY 1
执行的结果如下:
FullName
---------------------------------------------
Adams,Joe
Anderson,Missy
Andrews,Debble
Bettys,Dave
… …
   

T-SQL中的Select查询(续1)

T-SQL中的Select查询(续)下面来谈一下:Case表达式。这里所说的case命令与其它语言中用到的case命令是有区别的。它不是用来对程序流程进行控制的,而是基于条件来逻辑地确定一个表达式的值...
  • hxd001_810
  • hxd001_810
  • 2006年06月04日 14:18
  • 898

T-SQL中的Select查询(续4)

T-SQL中的Select查询(续4)这两天因房子问题,实在抽不出空来,这不现在趁午休时间,就把该“T-SQL中的Select查询”系列结个尾吧!今天呢,让我们一起来探讨一下“空值”的相关问题吧!在关...
  • hxd001_810
  • hxd001_810
  • 2006年06月18日 15:10
  • 1139

T-SQL中的Select查询(续2)

T-SQL中的Select查询现在来讨论一下:WHERE条件。Where条件对from子句产生的数据进行筛选,挑出那些要放到结果集中的记录行。在这里需要提到一点的是:一种提高客户/服务器数据库性能的有...
  • hxd001_810
  • hxd001_810
  • 2006年06月04日 16:38
  • 1078

T-SQL中的Select查询

T-SQL中的Select查询Select是SQL中功能最为强大的命令。对于Select---这个最重要的数据操作命令(DML)可以有无尽的话题。要明白,了解和掌握Select为我们提供的多种选择以及...
  • hxd001_810
  • hxd001_810
  • 2006年05月30日 21:52
  • 1223

t-sql操作符中,不等号(!=,<>),查询出来的结果集不包含有当前字段为null的数据

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的数值不等于右边的操作数,则结果为 TRUE;否则结果为 FALSE。如果两个操作数中有一个或者两个都为 NULL,并且 SET ANS...
  • qzslzy
  • qzslzy
  • 2017年07月27日 09:53
  • 212

T-SQL中APPLY应用事例解析

      一直都没研究过Apply的用法,最近浏览帖子,是不是会看到,顺便学习一下。     MSDN:使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为...
  • xrongzhen
  • xrongzhen
  • 2011年03月23日 16:33
  • 3394

T-SQL:数据查询

T-SQL:数据查询
  • zsx157326
  • zsx157326
  • 2016年05月12日 12:38
  • 465

SQL扩展之T-SQL中的数据查询语言之连接查询

当一个查询涉及到两个或则多个表的数据时。需要指定连接列进行连接查询。     连接查询是关系数据库中的重要查询,在T-SQL中连接查询有2中表示方式,一种是连接谓词表示形式,另一种是使用关键字JOIN...
  • HK_5788
  • HK_5788
  • 2015年09月24日 18:59
  • 544

T-SQL SELECT 查询

T-SQL SELECT 查询INSERT,UPDATE,DELETE返回的是INT型,SELECT返回的是记录集-RECORDSET使用IN 可以在RECORDSET上再次查询SELECT 列名 F...
  • viperasi
  • viperasi
  • 2007年08月27日 12:09
  • 1010

T-SQL语句查询

T-SQL语句简单查询 1.T-SQL语句的组成。 T-SQL语言主要由以下几个部公组成: 1.1  DML(数据操作语言):用来查询、插入、删除和修改数据库中的数据,如Select 、Inse...
  • u011554611
  • u011554611
  • 2014年03月25日 15:41
  • 1020
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:T-SQL中的Select查询(续3)
举报原因:
原因补充:

(最多只允许输入30个字)