您好!欢迎访问家园网-www.jy.wang!

家园网

SQL 常量与表达式查询代码

网络 作者:本站 点击:


SELECT goods_id AS 商品ID,goods_name AS 商品名称,1+1,'字符'+'串列'
FROM goods;

SQL 常量与表达式查询代码逐行讲解

这段代码展示了 SQL 中一个非常实用但容易被忽略的功能:在查询结果中直接添加常量列或表达式列


一、代码整体结构

sql

SELECT 
    goods_id AS 商品ID,
    goods_name AS 商品名称,
    1 + 1,
    '字符' + '串列'FROM goods;


二、逐部分讲解

第1-2行:普通字段查询

sql

goods_id AS 商品ID,goods_name AS 商品名称,

部分含义
goods_id商品编号字段
AS 商品ID将列名显示为"商品ID"
goods_name商品名称字段
AS 商品名称将列名显示为"商品名称"

第3行:计算表达式

sql

1 + 1,

部分含义
1 + 1一个算术表达式,计算结果为 2

特点

  • 不依赖于任何表中的字段

  • 每一行都会重复计算这个表达式

  • 结果列没有别名,列名会显示为 '1+1' 或类似形式


第4行:字符串拼接表达式

sql

'字符' + '串列'

部分含义
'字符'第一个字符串常量
+字符串拼接运算符(SQL Server 写法)
'串列'第二个字符串常量
'字符' + '串列'拼接结果为 '字符串列'

注意:不同数据库的字符串拼接写法不同

数据库拼接写法示例
SQL Server+'字符' + '串列'
MySQLCONCAT()CONCAT('字符','串列')
Oracle||'字符' || '串列'
PostgreSQL|| 或 CONCAT()'字符' || '串列'

三、执行效果示例

假设原表数据

goods_idgoods_name
101手机
102电脑
103耳机

查询结果

商品ID

商品名称

(无列名)

(无列名)

101

手机

2

字符串列

102

电脑

2

字符串列

103

耳机

2

字符串列


四、常量列和表达式列的常见用途

用途示例说明
固定标识'商城' AS 数据来源给每一行标记固定值
计算列price * 0.8 AS 折扣价基于字段计算
条件判断CASE WHEN price>100 THEN '贵' ELSE '便宜' END动态分类
调试/测试1+1测试表达式是否正确
合并数据'固定文本'多表 UNION 时区分来源

五、给常量列添加别名(推荐)

sql

SELECT 
    goods_id AS 商品ID,
    goods_name AS 商品名称,
    1 + 1 AS 计算测试,           -- ✅ 有别名,结果清晰
    '字符' + '串列' AS 拼接测试,   -- ✅ 有别名,结果清晰
    '固定商城' AS 数据来源         -- ✅ 固定值标记FROM goods;

结果

商品ID

商品名称

计算测试

拼接测试

数据来源

101

手机

2

字符串列

固定商城

102

电脑

2

字符串列

固定商城

103

耳机

2

字符串列

固定商城

六、不同数据库的字符串拼接对比

SQL Server

sql

SELECT '字符' + '串列' AS 结果;  -- 结果:字符串列

MySQL

sql

SELECT CONCAT('字符', '串列') AS 结果;  -- 结果:字符串列

Oracle / PostgreSQL

sql

SELECT '字符' || '串列' AS 结果;  -- 结果:字符串列


七、总结

问题答案
1+1 是什么?算术表达式,每一行都会计算为 2
'字符'+'串列' 是什么?字符串拼接表达式,结果为 '字符串列'
为什么需要这些?添加常量列、计算列,方便数据标记和处理
列名为什么是空的?因为没有使用 AS 指定别名
如何让列名更清晰?使用 AS 别名 给每一列命名
这些值来自表吗?❌ 不来自表,是查询时临时生成的

一句话总结:这段代码在查询商品信息的同时,添加了两个不依赖于表的计算列——一个算术表达式 1+1(结果为2)和一个字符串拼接 '字符'+'串列'(结果为"字符串列")。这种写法常用于添加固定值标记、测试表达式或在 UNION 查询中区分数据来源。建议给这类列添加别名,让结果更清晰易读


标签: