【问题标题】:how to split string in Snowflake by single backslash如何通过单个反斜杠拆分 Snowflake 中的字符串
【发布时间】:2023-02-02 23:36:08
【问题描述】:

有一个我无法直接使用 Snowflake 文档解决的问题:

我有一个像 'abc\def' 这样的字符串

需要将其拆分为“abc”、“def”

试过: split_to_table('abc\def', '\\') - 错误

strtok_to_array('abc\def', '\\') ==> [ “abcdef” ]

另外,我试图在拆分之前将其替换为更好的定界符

替换('abc\cde','\\','_another_symbol_'); ==> abccde REGEXP_REPLACE('abc\cde','$$\$$','_another_symbol_') ==>abccde_another_symbol

但它不起作用

知道如何解决吗?

【问题讨论】:

  • abc\def 是表中的值还是您正在玩的文字字符串?如果它被正确转义,它一定是作为abc\\def加载的,它可以与select split_part('abc\\def','\\',1)一起工作
  • 这是我们从另一个来源转移到 Snowflake 的字段值
  • 当您在雪花表上运行选择时,您看到的是abc\def 还是abcdef
  • 如果您只查找一个 '\' 并且想分成 2 个单词,那么您可以试试这个。选择 'abc/def',SUBSTR('abc/def',1, regexp_instr('abc/def','/')-1) first_w, SUBSTR('abc/def', regexp_instr('abc/def', '/')+1 ) 来自 dual 的 secound_w ;

标签: replace split snowflake-cloud-data-platform backslash


【解决方案1】:

如果您只使用 SPLIT,它会将值拆分为一个数组,然后您可以根据需要进行处理,例如

with dataset as (
     select $1 as col1 from
     (values
     ('abc\def'),
     ('ghi\jkl'))
 )
 select col1, split(col1,'\')
 from dataset
COL1 SPLIT(COL1,'')
abcdef [ "abc", "def" ]
ghijkl [ "ghi", "jkl" ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2022-12-19
    • 2019-09-18
    相关资源
    最近更新 更多