【问题标题】:REGEXP REPLACE with backslashes in Spark-SQL在 Spark-SQL 中用反斜杠替换 REGEXP
【发布时间】:2020-08-14 00:57:53
【问题描述】:

我有一个包含 \s\ 关键字的字符串。现在,我想用 NULL 替换它。

select string,REGEXP_REPLACE(string,'\\\s\\','') from test

但在spark sql中无法替换为上述语句

输入:\s\help
输出:帮助

想用regexp_replace

【问题讨论】:

  • (1) 您使用的是什么数据库? (2) NULL 不能在字符串中替换。 (3) 你要replace()吗?
  • 我想用空白替换..我正在使用 sparksql。只有 regexp_replace 可用。
  • 你试过用空字符串替换它吗?
  • 是的,杰克。它失败了。执行 SQL 命令时出错:select string,REGEXP_REPLACE(string,'\\s\\','') from test.无效操作:发现不完整的转义序列。解析正则表达式时出错:
  • 在您的评论中,s 后面有两个反斜杠,在您的问题中只有一个。在您逃避' 的问题中存在显着差异,这肯定会破坏它。

标签: sql apache-spark-sql regexp-replace


【解决方案1】:

要替换实际字符串中的一个\,您需要在regexep_replace 的模式中使用\\\\(4 个反斜杠)。请查看https://stackoverflow.com/a/4025508/9042433 了解为什么需要 4 个反斜杠来替换一个反斜杠

因此,所需的语句将如下所示

select name, regexp_replace(name, '\\\\s\\\\', '') from test

下面的截图有一些例子可以更好地理解

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多