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。
1条答案
按热度按时间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。
'0+$'
-这将删除尾随的0。^0+(?!$)
-这将删除前导0。