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 | + | '字符' + '串列' |
| MySQL | CONCAT() | CONCAT('字符','串列') |
| Oracle | || | '字符' || '串列' |
| PostgreSQL | || 或 CONCAT() | '字符' || '串列' |
三、执行效果示例
假设原表数据
| goods_id | goods_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 查询中区分数据来源。建议给这类列添加别名,让结果更清晰易读