zoukankan      html  css  js  c++  java
  • 不从实体表中取的数据

    有的时候我们需要查询一些不能从任何实体表中能够取得的数据,比如将数字1作为结果集或者计算字符串“abc”的长度。

    有的开发人员尝试使用下面的SQL来完成类似的功能:

    
    SELECT 1 FROM T_Employee
    

    可是执行以后却得到了下面的执行结果集

    
    1
    
    1
    
    1
    
    1
    
    1
    
    1
    
    1
    
    1
    
    1
    

    结果集中出现了不止一个1,这时因为通过这种方式得到的结果集数量是取决于T_Employee表中的数据条目数的,必须要借助于DISTINCT关键字来将结果集条数限定为一条,SQL语句如下:

    
    SELECT DISTINCT 1 FROM T_Employee
    

    执行完毕我们就能在输出结果中看到下面的执行结果:

    
    1
    

    就能在输出结果中看到下面的执行结果:

    
    1
    

    还可以在不带FROM子句的SELECT语句中使用函数,比如下面的SQL将字符串“abc”

    的长度作为结果集:

    MYSQL:

    
    SELECT LENGTH("abc")
    

    MSSQLServer:

    
    SELECT LEN("abc")
    

    执行完毕我们就能在输出结果中看到下面的执行结果:

    
    3
    

    还可以在SELECT语句中同时计算多个表达式,比如下面的SQL语句将1、2、3、’a’、’b’、’c’作为结果集:

    
    SELECT 1,2,3,"a","b","c"
    

    执行完毕我们就能在输出结果中看到下面的执行结果:

    
    1 2 3 a b c
    

    在Oracle中是不允许使用这种不带FROM子句的SELECT语句,不过我们可以使用Oracle的系统表来作为FROM子句中的表名,系统表是Oracle内置的特殊表,最常用的系统表为DUAL。比如下面的SQL将1以及字符串"abc"的长度作为结果集:

    
    SELECT 1, LENGTH("abc") FROM DUAL
    

    执行完毕我们就能在输出结果中看到下面的执行结果:

    
    1 LENGTH(ABC)
    
    1 3
    

    在DB2中也同样不支持不带FROM子句的SELECT语句,它也是采用和Oracle类似的系统表,最常用的系统表为SYSIBM.SYSDUMMY1。比如下面的SQL将1以及字符串"abc"的长度作为结果集:

    
    SELECT 1, LENGTH("abc") FROM SYSIBM.SYSDUMMY1
    

    执行完毕我们就能在输出结果中看到下面的执行结果:

    
    1 2
    
    1 3
  • 相关阅读:
    TopCoder SRM502 Div1 500 贪心 01背包
    TopCoder SRM502 Div1 1000 动态规划
    LOJ#6433. 「PKUSC2018」最大前缀和 状压dp
    Codeforces 830D Singer House 动态规划
    Codeforces 830C Bamboo Partition 其他
    UOJ#275. 【清华集训2016】组合数问题 数位dp
    Codeforces 806 D. Perishable Roads Dijkstra
    UOJ#53. 【UR #4】追击圣诞老人 树链剖分 k短路
    Java第二天——标识符命名规则、Java的知识、快捷键的使用、Scanner获取值的常用方法
    Scanner的例子
  • 原文地址:https://www.cnblogs.com/yuyu666/p/9823637.html
Copyright © 2011-2022 走看看