Sql 将字符串转换为数组并在Vertica上验证大小

Sql 将字符串转换为数组并在Vertica上验证大小,sql,vertica,Sql,Vertica,我需要执行一个SQL查询,将字符串列转换为数组,然后验证该数组的大小 我可以用postgresql轻松地做到这一点: e、 g 但由于某些原因,尝试将vertica上的字符串转换为数组并不是那么简单,请参见以下链接: 他们中没有一个人帮助了我们 我还尝试使用: select REGEXP_COUNT('a$b$$$$$','$') 但是我得到了一个不正确的值-1 如何在Vertica上将字符串转换为数组并获取其长度?$在正则表达式中具有特殊含义。它表示字符串的结尾 尝试逃避它: sele

我需要执行一个SQL查询,将字符串列转换为数组,然后验证该数组的大小

我可以用postgresql轻松地做到这一点: e、 g

但由于某些原因,尝试将vertica上的字符串转换为数组并不是那么简单,请参见以下链接:

他们中没有一个人帮助了我们

我还尝试使用:

select  REGEXP_COUNT('a$b$$$$$','$')
但是我得到了一个不正确的值-1


如何在Vertica上将字符串转换为数组并获取其长度?

$
在正则表达式中具有特殊含义。它表示字符串的结尾

尝试逃避它:

select REGEXP_COUNT('a$b$$$$$', '[$]')

我无法转换为数组,但我可以得到值的长度 我所做的是将行转换为use count,这并不是最佳性能 但通过这种方式,我也可以做一些操作,比如过滤分隔符之间的每个值——我不需要对像这样的字符使用[]$

select (select count(1)   
        from (select StringTokenizerDelim('a$b$c','$') over ()) t)  

<> >返回3 < /P> < p>您可以在爪哇、C++、R或Python中创建一个UDX标量函数(UDSF)。输入为字符串,输出为整数

这将允许您对传入的字符串使用特定于语言的数组逻辑。例如,在python中,可以包含以下逻辑:

input\u list=input.split($)
过滤的输入列表=列表(过滤器(无,输入列表))
列表计数=len(过滤的输入列表)

这些例子是为Vertica编写UDx的一个很好的起点

好的,仍然假设它将是一个不同的字符,我会在Vertica上将字符串转换为数组吗?@BarakKedem。我看不出数组与计算字符串中的字符(或正则表达式)有什么关系。在Postgres中,这是一种方便的方法,但还有其他解决方案。我不需要计算字符数,我需要用分隔符将字符串拆分为数组,然后看看这个数组中有多少变量计算字符数很好,但不一样。
select (select count(1)   
        from (select StringTokenizerDelim('a$b$c','$') over ()) t)