三、SQL数据检索11(不从实体表中取的数据)
2020-04-10 本文已影响0人
小小一颗卤蛋
有时需要查询一些不能从任何实体表中能够取得的数据。
如:将数字1作为结果集或者计算字符串“abc”的长度。
*尝试使用下面的SQL来完成类似的功能:
SELECT 1 FROM T_Employee
执行结果集:
1
1
1
1
1
1
1
1
1
结果集中出现了不止一个1,因为通过这种方式得到的结果集数量取决于T_Employee表中的数据条目数,必须要借助于DISTINCT关键字来将结果集条数限定为一条,如下:
SELECT DISTINCT 1 FROM T_Employee
执行结果:
1
可以在不带FROM子句的SELECT语句中使用函数
如:将字符串“abc”的长度作为结果集输出:
MYSQL:
SELECT LENGTH('abc')
MSSQLServer:
SELECT LEN('abc')
执行结果:
3
可以在SELECT语句中同时计算多个表达式
如:将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
如:将1以及字符串'abc'的长度作为结果集输出:
SELECT 1, LENGTH('abc') FROM DUAL
执行结果:
1 LENGTH(ABC)
1 3
在DB2中也不支持不带FROM子句的SELECT语句,它也是采用和Oracle类似的系统表,最常用的是SYSIBM.SYSDUMMY1。
如:将1以及字符串'abc'的长度作为结果集:
SELECT 1, LENGTH('abc') FROM SYSIBM.SYSDUMMY1
执行结果:
1 2
1 3