首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >flink实时流处理中常用的数据处理函数

flink实时流处理中常用的数据处理函数

作者头像
用户4128047
发布2025-12-23 17:37:03
发布2025-12-23 17:37:03
1690
举报

       常用且重要的函数,主要用于数据处理、数据清洗和类型转换。下面我为你详细解释每个函数的功能和典型应用场景。

总结概览

函数 主要用途 形象比喻 TRIM 去除字符串首尾的空格或指定字符 给字符串“剪头发”(去头去尾) CAST 转换数据类型 给数据“换一件衣服”(改变其类型) COALESCE 从参数列表中返回第一个非空值 “备胎”函数,防止出现空值 CHAR_LENGTH 计算字符串的字符个数 字符串的“字符计数器”

---

1. TRIM - 清理字符串

功能: 移除字符串开头和/或结尾的空白字符(如空格、制表符、换行符)或其他指定的字符。

常见语法:

· TRIM(string):移除首尾所有空白字符。 · TRIM(LEADING FROM string):只移除开头的空白。 · TRIM(TRAILING FROM string):只移除结尾的空白。 · TRIM(BOTH ‘x’ FROM string):移除首尾指定的字符 ‘x’。

主要用途:

· 数据清洗:用户输入的数据(如姓名、地址)前后常常带有无意识输入的空格,TRIM 可以标准化这些数据,避免因多余空格导致查询失败或数据不一致。 · 字符串比较:确保比较的字符串没有前后空格干扰。

示例:

```sql SELECT TRIM('   Hello World   '); -- 结果:'Hello World' SELECT TRIM(LEADING FROM '   Hello World   '); -- 结果:'Hello World   ' SELECT TRIM(BOTH '!' FROM '!!Hello World!!'); -- 结果:'Hello World' ```

---

2. CAST - 类型转换

功能: 将一个数据类型的值转换为另一个数据类型。

语法: CAST(expression AS target_data_type)

主要用途:

· 数据类型兼容:当需要在不同数据类型的列之间进行比较或计算时(例如,将字符串‘123’转换成整数再与数字列比较)。 · 格式化输出:确保查询结果以特定的数据类型返回,便于应用程序处理。 · 精确计算:避免整数除法等问题(例如,CAST(column_name AS FLOAT) 来得到小数结果)。

示例:

```sql -- 将字符串转换为整数进行计算 SELECT CAST('123' AS SIGNED) + 5; -- 结果:128

-- 将日期字符串转换为真正的 DATE 类型 SELECT CAST('2023-10-01' AS DATE);

-- 将数字转换为字符串进行拼接 SELECT ‘User’ + CAST(123 AS CHAR); -- 结果:'User123'(在某些数据库中使用 CONCAT 更佳) ```

---

3. COALESCE - 处理空值(NULL)

功能: 接受一个参数列表,返回其中第一个非 NULL 的值。如果所有参数都是 NULL,则返回 NULL。

语法: COALESCE(value1, value2, value3, ...)

主要用途:

· 为 NULL 值提供默认值:这是最常见的用法。当某个字段可能为 NULL 时,用 COALESCE 提供一个备选值,避免在报表或程序中出现空值。 · 多字段优先级选择:从多个可能为空的字段中,按优先级选择一个有值的字段。

示例:

```sql -- 如果 phone_number 为 NULL,则显示 ‘N/A’ SELECT name, COALESCE(phone_number, ‘N/A’) AS contact FROM users;

-- 优先级选择:先看昵称,没有昵称就用本名 SELECT COALESCE(nickname, first_name) AS display_name FROM profiles;

-- 在计算中避免 NULL 污染(任何与 NULL 的计算结果都是 NULL) SELECT price * COALESCE(discount, 1) AS final_price FROM products; -- 如果 discount 是 NULL,则按原价 (price * 1) 计算 ```

---

4. CHAR_LENGTH (或 LENGTH) - 字符串长度

功能: 返回字符串的字符数。

注意: 还有一个函数叫 LENGTH,它返回的是字符串的字节数。对于像中文、日文这样的多字节字符,CHAR_LENGTH 和 LENGTH 的结果会不同。

· CHAR_LENGTH(‘你好’) -> 返回 2(2个字符) · LENGTH(‘你好’) -> 在 UTF-8 编码中返回 6(因为每个中文字符占3个字节)

主要用途:

· 数据验证:验证输入是否符合长度要求(如用户名、密码、验证码)。 · 字符串分析:作为子串操作或其他字符串处理函数的基础。

示例:

```sql SELECT CHAR_LENGTH('Hello'); -- 结果:5 SELECT CHAR_LENGTH('你好世界'); -- 结果:4

-- 验证用户名长度至少为3个字符 SELECT username FROM users WHERE CHAR_LENGTH(username) >= 3; ```

综合运用示例

假设有一个“用户评论”表,我们需要清理数据并生成报告:

```sql SELECT     comment_id,     -- 清理评论内容,去除首尾空格     TRIM(comment_text) AS cleaned_comment,     -- 计算清理后评论的字符长度     CHAR_LENGTH(TRIM(comment_text)) AS comment_length,     -- 如果用户昵称为空,则用‘匿名用户’代替     COALESCE(TRIM(nickname), ‘Anonymous‘) AS display_name,     -- 将字符串类型的评分转换为数字,以便排序或计算     CAST(rating AS SIGNED INTEGER) AS numeric_rating FROM     user_comments; ```

        通过这些函数的组合使用,你可以有效地对原始数据进行清洗、转换和格式化,使其变得规范、可用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档