我正在尝试使用简单的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
但这也不行。
请建议一种方法,以便我可以获得理想的输出
答案 0 :(得分:0)
评论太长了。
此代码:
select translate('1049477-1623095-2412303', '-', '')
将要回归:
'104947716230952412303'
返回值是字符串,而不是数字。
无法返回'104947716230952000000'。我只能想象如果将某个值转换为数字或bigint类型,就会发生这种情况。
答案 1 :(得分:0)
答案 2 :(得分:0)
可以通过以下代码实现RPAD。
SELECT RPAD(TRANSLATE(CAST(t.data as VARCHAR),'-','') ,20,'00000000000000000000')