不从实体表中取的数据
有的时候我们需要查询一些不能从任何实体表中能够取得的数据,比如将数字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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理