我想比较字段的字节长度,因为该字段中可能包含一些零宽度字符。
Binary函数似乎最相关,但是似乎它们都期望长度为一的输入,而且我找不到用任何方法将字符串分割成单独的行。
例如
select from_hex('abc')
给出错误
无效的输入长度3
我无法“一无所获”将其转换为3行(分别为a
,b
,c
):
select split('abc', '')
分隔符不能为空字符串
在R中,我习惯了nchar
函数,可以在其中指定type = 'bytes'
(按字节数),'chars'
(与Presto的length
匹配)见过)或'width'
(零宽度字符不计算在内-字符串的可见宽度),其中strsplit('abc', NULL)
或strsplit('abc', '')
给出list(c('a', 'b', 'c'))
。 / p>
我不确定是否可以在此处复制粘贴具有零宽度字符的字符串,因此这里是创建一个的R代码:
rawToChar(as.raw(c(0x68, 0x65, 0x6c, 0x6c, 0x6F, 0xe2, 0x80, 0x8d)))
具有Presto length
的输出:
select length('hello')
在R中,我可以得到此字符串的三种不同宽度:
sapply(c('width', 'chars', 'bytes'), x = 'hello')
# width chars bytes
# 5 6 8
有什么方法可以在Presto中复制它吗?