sql-expressions
SQL - 表达式
Section titled “SQL - 表达式”SQL 表达式是一个或多个值、运算符和 SQL 函数的组合,它会解析为一个值。表达式是查询的构建块,用于 SELECT 列表、WHERE 子句、GROUP BY 子句等。
什么是 SQL 表达式?
Section titled “什么是 SQL 表达式?”将表达式视为一个公式。它可以像常量值(100)或列名(salary)一样简单,也可以像函数、计算和子查询的组合一样复杂。它们通常用于 WHERE 子句来过滤数据。
SELECT column1, column2, ...FROM table_nameWHERE [EXPRESSION]; -- 一个求值为 TRUE、FALSE 或 UNKNOWN 的条件布尔表达式求值为一个真值:TRUE、FALSE 或 UNKNOWN(如果涉及 NULL)。它们通常使用比较运算符(=, >, <, <>)和逻辑运算符(AND, OR, NOT)来形成条件。
考虑 CUSTOMERS 表:
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
以下查询使用布尔表达式来查找年龄为 25 岁且薪水大于 2000 的客户:
SELECT * FROM CUSTOMERSWHERE AGE = 25 AND SALARY > 2000;| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
数值表达式使用算术运算符(+、-、*、/、%)执行数学计算。它们可以用于数值字面量或列。
示例:计算派生值
Section titled “示例:计算派生值”这里,一个数值表达式计算每个客户 10% 的奖金,并为结果列指定别名 BONUS。
SELECT NAME, SALARY, SALARY * 0.10 AS BONUSFROM CUSTOMERS;| NAME | SALARY | BONUS |
|---|---|---|
| Ramesh | 2000.00 | 200.00 |
| Khilan | 1500.00 | 150.00 |
| kaushik | 2000.00 | 200.00 |
| Chaitali | 6500.00 | 650.00 |
日期和时间表达式
Section titled “日期和时间表达式”这些表达式对日期和时间数据类型进行操作。它们用于检索当前时间、操作日期或根据时间段过滤记录。
示例:使用日期函数
Section titled “示例:使用日期函数”大多数数据库都提供函数来获取当前时间戳(CURRENT_TIMESTAMP、NOW())和提取日期的部分(EXTRACT、DATE_PART)。
-- 获取当前系统时间戳(语法可能略有不同)SELECT CURRENT_TIMESTAMP;
-- PostgreSQL 或标准 SQL 示例:从订单日期中提取年份SELECT OID, EXTRACT(YEAR FROM ORDER_DATE) AS OrderYearFROM ORDERSWHERE ORDER_DATE < DATE '2023-11-01';请注意 DATE '2023-11-01' 的使用。这是日期字面量的标准 SQL 语法,比使用像 '2023-11-01' 这样的纯字符串(它依赖于隐式类型转换)更好。
字符串表达式
Section titled “字符串表达式”字符串表达式用于操作字符数据。常见操作包括字符串连接和使用 UPPER、LOWER、SUBSTRING 和 TRIM 等函数。
示例:连接和格式化字符串
Section titled “示例:连接和格式化字符串”以下查询通过连接名字和姓氏创建全名,并将地址转换为大写。在标准 SQL 和 PostgreSQL 中,连接运算符是 ||,而在 SQL Server 中是 +。
-- 标准 SQL / PostgreSQLSELECT NAME || ' from ' || ADDRESS AS FullDescription, UPPER(ADDRESS) AS UppercaseAddressFROM CUSTOMERS;条件表达式(CASE)
Section titled “条件表达式(CASE)”CASE 表达式是一个强大的工具,用于在 SQL 查询中实现 if-then-else 逻辑。它允许你根据一组条件返回不同的值。
示例:数据分类
Section titled “示例:数据分类”此查询使用 CASE 表达式将客户分类到不同的薪资区间。
SELECT NAME, SALARY, CASE WHEN SALARY < 2000 THEN 'Low' WHEN SALARY >= 2000 AND SALARY < 5000 THEN 'Medium' WHEN SALARY >= 5000 THEN 'High' ELSE 'Uncategorized' END AS SalaryBracketFROM CUSTOMERS;| NAME | SALARY | SalaryBracket |
|---|---|---|
| Ramesh | 2000.00 | Medium |
| Khilan | 1500.00 | Low |
| kaushik | 2000.00 | Medium |
| Chaitali | 6500.00 | High |