View a markdown version of this page

REGEX_REPLACE - Amazon Kinesis Data Analytics SQL 参考

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

REGEX_REPLACE

REGEX_REPLACE 将子字符串替换为备用子字符串。它返回以下 Java 表达式的值。

java.lang.String.replaceAll(regex, replacement)

语法

REGEX_REPLACE(original VARCHAR(65535), regex VARCHAR(65535), replacement VARCHAR(65535), startPosition int, occurence int) RETURNS VARCHAR(65535)

参数

original

要对其执行正则表达式操作的字符串。

regex

要匹配的正则表达式。如果 regex 的编码与 original 的编码不匹配,则将向错误流写入错误。

replacement

用于替换 original 字符串中的 regex 匹配项的字符串。如果 replacement 的编码与 original 或 regex 的编码不匹配,则将向错误流写入错误。

startPosition

要搜索的 original 字符串中的第一个字符。如果 startPosition 小于 1,则将向错误流写入错误。如果 startPosition 大于 original 的长度,则将返回 original。

occurence

要替换的与 regex 表达式匹配的字符串数量。如果 occurence 为 0,则将替换所有匹配 regex 的子字符串。如果 occurence 小于 0,则将向错误流写入错误。

示例

示例数据集

以下示例基于示例股票数据集,后者是《Amazon Kinesis Analytics 开发人员指南》 中的入门练习的一部分。

要运行每个示例,您需要一个具有样本股票代码输入流的 Amazon Kinesis Analytics 应用程序。要了解如何创建 Analytics 应用程序和配置示例股票代码输入流,请参阅《Amazon Kinesis Analytics 开发人员指南》 中的入门练习。

具有以下架构的示例股票数据集。

(ticker_symbol VARCHAR(4), sector VARCHAR(16), change REAL, price REAL)

示例 1:将源字符串中的所有字符串值替换为新值

在此示例中,如果 sector 字段中的所有字符串都与正则表达式匹配,则它们都将被替换。

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), SECTOR VARCHAR(24), CHANGE REAL, PRICE REAL); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM TICKER_SYMBOL, REGEX_REPLACE(SECTOR, 'TECHNOLOGY', 'INFORMATION TECHNOLOGY', 1, 0); CHANGE, PRICE FROM "SOURCE_SQL_STREAM_001"

上一示例输出的流与以下内容类似。

该表显示了股票数据,其中包含行时间、股票代码、板块、变动和价格列。

注意

REGEX_REPLACE 不是标准的一部分。 SQL:2008 它是 Amazon Kinesis Data Analytics 流式 SQL 扩展。

如果所有参数都为 null,则 REGEX_REPLACE 返回 null。