Teradata和hive中的“00”XC

vfh0ocws  于 2023-01-09  发布在  Hive
关注(0)|答案(1)|浏览(137)

我在Teradata中找到了以下查询,运行时没有错误。

Trim(Both '00'XC FROM STG_101_104_BORM_NEW.NO_TRN) AS NO_TRN

两个'00'XC函数有什么用?当我在hive上运行它时有一个错误,当我们把它翻译成hive时应该改变什么?

vvppvyoh

vvppvyoh1#

Trim(Both '00'XC FROM STG_101_104_BORM_NEW.NO_TRN)将在Teradata中工作,它从字符串中删除前导和尾随的空十六进制字符。'00'XC-是空字符。XC表示十六进制字符串文字,00在十六进制中为空。
所以trim()试图删除它,但这在teradata中有效,但在hive中无效。你需要知道这个函数在teradta中的用途,然后在hive中相应地实现。
我在下面解释了trim()在hive和teradata中的不同之处。
hive中的trim(origstr)只是删除字符串左右两边的空格。
Teradata中的trim(both/leading/trailing patternstr from origstr))也会删除字符串中的空格(和其他字符串),但它需要更多参数。它的功能更强大,因为它还可以删除字节/十六进制字符等。Teradata-Trim例如在hive-
SELECT TRIM(' aabccd ') FROM t2;-将产生aabccd
例如在太拉达-
SELECT TRIM(BOTH FROM ' aabccd ') FROM t2;-将产生aabccd
SELECT TRIM(LEADING 'a' FROM 'aabccd') FROM t2;-将产生bccd
编辑:请使用删除前导和尾随0。

select REGEXP_REPLACE(REGEXP_REPLACE('000ABCA000','0+$',''),"^0+(?!$)",'')

'0+$'-这将删除尾随的0。
^0+(?!$)-这将删除前导0。

相关问题