翻译函数不返回亚马逊红移中的相关字符串

时间:2017-07-25 11:02:56

标签: sql amazon-redshift

我正在尝试使用简单的Translate函数替换23位字符串中的“ - ”。一个这样的字符串的例子是“1049477-1623095-2412303”我的查询的预期结果应该是104947716230952412303

所有“1049477-1623095-2412303”的列表出现在单个列“table1”中。该列的名称是“data”

我的查询是

Select TRANSLATE(t.data, '-', '')
from table1 as t

然而,它返回104947716230952000000作为输出。

起初,我认为这是一个溢出错误,因为结果整数是20位,所以我也尝试使用以下

SELECT CAST(TRANSLATE(t.data,'-','') AS VARCHAR)
from table1 as t

但这也不行。

请建议一种方法,以便我可以获得理想的输出

3 个答案:

答案 0 :(得分:0)

评论太长了。

此代码:

select translate('1049477-1623095-2412303', '-', '')

将要回归:

'104947716230952412303'

返回值是字符串,而不是数字。

无法返回'104947716230952000000'。我只能想象如果将某个值转换为数字或bigint类型,就会发生这种情况。

答案 1 :(得分:0)

尝试regexp_replace()

举个例子,执行:

select regexp_replace('[string / column_name]','-');

enter image description here

答案 2 :(得分:0)

可以通过以下代码实现RPAD

             SELECT RPAD(TRANSLATE(CAST(t.data as VARCHAR),'-','') ,20,'00000000000000000000')