本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
要匹配的正则表达式
replacement
替换正则表达式的字符串与原始字符串相匹配。如果 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 Studio
如果所有参数都为 null
,则 REGEX_REPLACE 返回 null
。