微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

雪花中的制表符缩进是否有特殊字符?

如何解决雪花中的制表符缩进是否有特殊字符?

我需要计算雪花字符串中的单词。 问题是单词之间有空格, 以品种计数。

例如:

str = '67778        19gj5  7770 202ty524 2024       i900      3290 POC/*'

我想得到字数 - 8。

我尝试了什么:

array_size(split(str,' '))

返回 27 :(

array_size(split(str,'\t'))

返回 1。

有什么想法吗?

解决方法

替代解决方案:

  1. 使用 regex_replace 用一个空格替换所有出现的多个空格
  2. 使用单个空格作为分隔符拆分字符串(即您最初尝试的)
,

这是@NickW 建议的实现,并做了一些改进:

用单个空格替换所有连续的 whitespace 字符 (\\s+) 并将其拆分,使用 array_size,它将适用于所有空格:空格、制表符、换行符等:

WITH t1 AS (
select '67778        19gj5  7770 202ty524 2024       i900      3290 POC/*' as str
    )
    
 select array_size(split(regexp_replace(str,'\\s+',' '),' ')) num_words
 from t1

结果:

NUM_WORDS
8
,

您可以使用 SPLIT_TO_TABLECOUNT_IF

CREATE OR REPLACE TABLE t AS
SELECT  '67778        19gj5  7770 202ty524 2024       i900      3290 POC/*' AS str;

查询:

SELECT STR,COUNT_IF(s.VALUE != '') AS num_of_words
FROM t,LATERAL SPLIT_TO_TABLE(t.str,' ')s
GROUP BY STR;

输出:

STR                                                                 num_of_words
67778        19gj5  7770 202ty524 2024       i900      3290 POC/*   8

编辑:

或者使用 REGEXP_COUNT

SELECT *,REGEXP_COUNT(str,'\\b\S+\\b') AS num_of_words
FROM t;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。