高斯数据库(GaussDB)提供了丰富的内置函数来帮助您高效地处理和操作数据。下面我将这些常用函数分为几类,并用表格和例子简要说明,方便你快速了解。
| 函数类别 | 主要功能 | 典型函数举例 |
|---|---|---|
| 字符串函数 | 处理文本信息 | LENGTH, SUBSTRING, REPLACE, UPPER/LOWER, CONCAT, TRIM |
| 数值函数 | 数学计算与处理 | ABS, CEIL/FLOOR, ROUND, MOD, POWER, SQRT, RANDOM |
| 日期时间函数 | 处理日期、时间和时间戳 | CURRENT_DATE, CURRENT_TIME, NOW, EXTRACT, AGE, ADD_MONTHS |
| 聚合函数 | 对一组值执行计算并返回单个汇总值 | SUM, AVG, MAX, MIN, COUNT, ARRAY_AGG, STRING_AGG |
| 窗口函数 | 对查询结果集的行进行跨行计算 | RANK, ROW_NUMBER (常与OVER子句配合使用) |
| 条件函数 | 实现条件逻辑 | COALESCE, NULLIF, CASE |
| 加密安全函数 | 数据加密解密,增强安全性 | GS_ENCRYPT_AES128, GS_DECRYPT_AES128 |
| 系统信息函数 | 获取数据库、用户、会话等系统信息 | CURRENT_DATABASE, CURRENT_USER, CURRENT_SCHEMA |
| 范围函数 | 处理范围类型的数据 | NUMRANGE (创建范围), LOWER (范围下界), UPPER (范围上界), ISEMPTY (判空) |
| JSON函数 | 生成和处理JSON格式数据 | ARRAY_TO_JSON, ROW_TO_JSON |
| 序列函数 | 操作序列对象 | NEXTVAL, CURRVAL, SETVAL |
🧠 一些实用例子
光看表格可能有点抽象,看几个简单的例子吧:
-
字符串处理:想把姓和名连接起来并全部转为大写?
SELECT UPPER(CONCAT(last_name, ' ', first_name)) AS full_name FROM users; -
日期计算:计算员工的年龄?
SELECT name, AGE(CURRENT_DATE, birth_date) AS age FROM employees;这里的
AGE函数会返回一个类似43 years 9 mons 27 days的间隔。 -
条件判断:如果员工的奖金为NULL,则显示为0?
SELECT name, COALESCE(bonus, 0) AS actual_bonus FROM employees; -
数据加密:对敏感信息进行加密存储(例如,使用AES128加密算法):
SELECT gs_encrypt_aes128('敏感数据', '你的密钥'); -- 返回加密后的密文解密时使用:
SELECT gs_decrypt_aes128('加密后的密文', '你的密钥'); -- 返回原始数据注意:密钥长度需为8~16字节,且最好包含大写字母、小写字母、数字和特殊字符中的至少三种。
📖 使用建议
- 查阅官方文档:不同的GaussDB版本(如分布式版本或单机版本)在函数支持上可能存在细微差别,最准确的信息永远来自其对应版本的官方文档。
- 性能考量:特别是在处理大数据集时,注意函数的执行效率。聚合函数、窗口函数如果使用不当可能会成为性能瓶颈。
- 安全性:使用加密函数时,务必妥善管理密钥。像
gs_encrypt_aes128和gs_decrypt_aes128这类函数,为了安全起见,gsql工具不会将包含这些函数名的SQL记录在执行历史中,这是很好的安全实践,但也意味着你需要另寻他法来管理相关的SQL语句。
希望这些信息能帮助你更好地使用Gauss数据库。如果你想了解更多特定类型函数的详细用法,或者有具体的应用场景,可以告诉我。
424

被折叠的 条评论
为什么被折叠?



