regex 在Presto SQL中,对于字符串列,如何从每个字符串中的模式开始删除文本?

g52tjvyc  于 2023-05-08  发布在  Presto
关注(0)|答案(1)|浏览(238)

我正在尝试做一些字符串清理,并希望只保留给定模式之前的部分,并删除所有内容,包括模式和之后的所有内容。模式为“hi {{user_name}}”。例如:
上一篇:What a good day嗨{{user_name}}你好
预期输出:多好的一天啊。
上一篇:What a good day您好,请告诉我如何提供帮助。
预期输出:多好的一天啊。
上一篇:What a great day!
预期输出:多好的一天啊!
我尝试按模式进行拆分,只保留拆分结果的第一部分,但在SQL中找不到好的方法

4jb9z9bj

4jb9z9bj1#

您可以尝试使用regex_replacehi {{user_name}}.*模式(解释见regex101):

-- sample data
with dataset(str) as(
    values
        ('What a good day. hi {{user_name}} how are you'),
        ('What a good day. hi {{user_name}} let me know how I can help.'),
        ('What a great day!')

)

-- query 
SELECT regexp_replace(str, 'hi {{user_name}}.*', '')
FROM dataset;

输出(注意,这将在末尾保留空格):
| _col0|
| --------------|
| 多好的一天啊。|
| 多好的一天啊。|
| 多好的一天啊!|

相关问题