sql-datatype-functions
SQL - 数据类型转换与函数
Section titled “SQL - 数据类型转换与函数”在 SQL 中,数据类型函数对于操作和转换数据类型至关重要。为此目的最基本和广泛使用的函数是 CAST 和 CONVERT。掌握它们对于处理来自各种来源的数据、格式化输出和执行计算至关重要。
标准函数:CAST()
Section titled “标准函数:CAST()”CAST 是 ANSI SQL 标准函数,用于将值从一种数据类型转换为另一种数据类型。因为它属于标准,所以它是 PostgreSQL、SQL Server、MySQL 和 Oracle 等不同数据库系统中最具可移植性且推荐用于类型转换的函数。
CAST (expression AS data_type)- expression: 您想要转换的值或列(例如,‘2023-12-25’,123.45,‘500’)。
- data_type: 您想要转换成的目标 SQL 数据类型(例如,
DATE,INT,DECIMAL(10,2))。
CAST 示例
Section titled “CAST 示例”- 将字符串转换为数字: 这在数字数据存储为文本时很常见。
SELECT CAST('123' AS INT) + 10; -- 结果:133- 将字符串转换为日期: 处理日期格式的文本时必不可少。
SELECT CAST('2024-01-15' AS DATE); -- 结果:表示 2024 年 1 月 15 日的日期值- 将数字转换为字符串: 用于字符串连接。
SELECT 'Order ID: ' || CAST(404 AS VARCHAR(10)); -- 结果:'Order ID: 404' (注意:|| 是标准连接运算符)- 截断小数: 将小数转换为整数会截断小数部分。
SELECT CAST(99.99 AS INT); -- 结果:99替代函数:CONVERT()
Section titled “替代函数:CONVERT()”CONVERT 是另一个广泛使用的函数,在 SQL Server 中尤其突出。虽然它可以执行与 CAST 相同的类型转换,但其主要优点是可选的第三个参数,用于基于样式的格式化,特别是针对日期和时间。
-- 通用转换CONVERT (data_type, expression)
-- 基于样式的转换(主要在 SQL Server 中)CONVERT (data_type, expression, style_code)带有格式化的 CONVERT 示例
Section titled “带有格式化的 CONVERT 示例”在 SQL Server 中,您可以使用样式代码将日期格式化为各种字符串表示形式。例如,要以 dd/mm/yyyy 格式获取日期:
-- SQL Server 特定示例SELECT CONVERT(VARCHAR, GETDATE(), 103); -- 结果:'25/12/2023'(如果今天是圣诞节)最佳实践: 鉴于其可移植性,对于标准类型转换,请优先使用 CAST。当您需要 CONVERT 在支持它的数据库(如 SQL Server)中的特定格式化功能时,再使用它。
其他常用数据类型函数
Section titled “其他常用数据类型函数”除了转换之外,SQL 还提供了丰富的函数集来处理特定的数据类型。
LENGTH()或LEN(): 返回字符串中的字符数。UPPER()/LOWER(): 将字符串转换为大写或小写。SUBSTRING()或SUBSTR(): 提取字符串的一部分。TRIM(): 移除字符串开头和结尾的空白字符。
ROUND(number, precision): 将数字四舍五入到指定的小数位数。CEILING(number): 将数字向上舍入到最接近的整数。FLOOR(number): 将数字向下舍入到最接近的整数。ABS(number): 返回数字的绝对值(非负值)。
日期和时间函数
Section titled “日期和时间函数”NOW()或GETDATE()或CURRENT_TIMESTAMP: 返回当前数据库服务器的日期和时间。EXTRACT(part FROM date)或DATE_PART('part', date): 从日期中提取特定部分(年、月、日等)。
特定领域和供应商特定函数
Section titled “特定领域和供应商特定函数”一些函数提供高度特定的信息,通常与特定的数据库系统相关联。这些函数在通用应用程序开发中较少使用,但对于管理或诊断任务可能很有用。
| 函数 | 描述与用例 |
|---|---|
SQL_VARIANT_PROPERTY() | SQL Server 特有。返回有关 sql_variant 值的信息,这是一种可以保存各种类型数据的特殊类型。在现代设计中,通常不鼓励使用它,而推荐使用明确的类型。 |
IDENT_CURRENT(), IDENT_INCR(), IDENT_SEED() | SQL Server 特有。这些函数返回有关 IDENTITY 列(自增键)的元数据:当前标识值、增量步长和初始种子值。它们用于检查表定义。 |
DATALENGTH() | SQL Server 特有。返回用于表示表达式的字节数。这与 LEN() 不同,LEN() 返回字符数。它对于诊断 NVARCHAR 等可变长度数据类型的存储问题很有用。 |