Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


常量表达式

📄字数 1.1K
👁️阅读量 加载中...

概述

常量表达式是最基本的 SQL 表达式,用于表示固定不变的值。常量可以出现在查询、条件、赋值等各种语句中,是构建其他复杂表达式的基础。

常见的常量类型包括:

  • 数值常量(整数、小数)
  • 字符串常量
  • 布尔常量
  • 日期/时间常量
  • NULL值

示例

数值常量

sql
-- 数值常量
SQL> SELECT 100 AS int_value, 3.14 AS float_value;

+-----------+-------------+
| INT_VALUE | FLOAT_VALUE |
+-----------+-------------+
| 100       | 3.14        |
+-----------+-------------+

字符串常量

  • 字符串常量使用单引号包裹
sql
SQL> SELECT 'Hello world' AS greeting;

+-------------+
|  GREETING   |
+-------------+
| Hello world |
+-------------+

提示

虚谷数据库兼容MySQL双引号的使用(需要将兼容性参数compatible_mode设置为MYSQL)

sql
SQL> show compatible_mode;

+-----------------+
| COMPATIBLE_MODE |
+-----------------+
| NONE            |
+-----------------+

-- 设置兼容模式为MySQL
SQL> SET compatible_mode TO MYSQL;

-- MYSQL模式下的,双引号使用
SQL> SELECT "hello", "'hello'", "''hello''", "hel""lo" FROM DUAL;

+-------+---------+-----------+--------+
| hello | 'hello' | ''hello'' | hel"lo |
+-------+---------+-----------+--------+
| hello | 'hello' | ''hello'' | hel"lo |
+-------+---------+-----------+--------+

布尔常量

sql
SQL> SELECT TRUE AS success, FALSE AS failure;

+---------+---------+
| SUCCESS | FAILURE |
+---------+---------+
| T       | F       |
+---------+---------+

日期/时间常量

sql
SQL> SELECT
       '2024-06-30' ::date      AS date_literal,
       '12:34:56'::time         AS time_literal,
       '2024-06-30 12:34:56' :: datetime AS datetime_literal;

+--------------+--------------+--------------------------+
| DATE_LITERAL | TIME_LITERAL |     DATETIME_LITERAL     |
+--------------+--------------+--------------------------+
| 2024-06-30   | 12:34:56.000 | 2024-06-30 12:34:56.000  |
+--------------+--------------+--------------------------+

提示

  1. 虚谷数据库支持根据xugu.ini配置文件中参数def_timefmt修改默认日期时间格式
  2. 日期时间格式推荐保持默认值,遵循ISO8601(如 YYYY-MM-DD HH24:MI:SS)

NULL值

  • NULL表示“无值”或“未知值”
sql
SQL> SELECT NULL AS empty_value;

+-------------+
| EMPTY_VALUE |
+-------------+
| <NULL>      |
+-------------+

提示

  1. NULL在表达式中具有“传播”特性:任何包含NULL的运算,其结果通常也为NULL
  2. 判断NULL使用IS NULL/IS NOT NULL,不能使用=或<>

使用场景

  • 场景一:作为查询条件的固定值,直接作为过滤条件,用于提取特定行
  • 场景二:在建表语句中,常量表达式可以作为字段的默认值,常用于填充固定初始值或当前时间等
  • 场景三:用于计算派生列(虚拟列),在SELECT中直接使用常量表达式作为输出字段,也可用于构造“虚拟字段”
  • 场景四:在构建复杂表达式时,先用常量表达式验证逻辑正确性是高效调试方法