Netezza 将 char 转换为数字 - 算术 - 然后再次转换为 char

Netezza convert char to numeric - arithmetic - and convert again to char

我有一个 PersonNumb 字段,它是 varchar(30) 并且需要转换为数字,而不是做一些算术(在本例中是一些简单的加法 Value + 10,只是为了举例)然后再次将这个字段转换为varchar.

我确实切断了'|'将字段转换为数字,没有空格或其他字符,一切正常。

 to_number(translate(PersonNumb,'|',''),999999999999999999999999999999) AS NewPersonNumb;

比我用 update XX..YY set NewPersonNumb = NewPersonNumb + 10;

但最后一步不起作用,该字段仍然是数字不是 varchar

update XX..YY set NewPersonNumb = to_char(NewPersonNumb,'999999999999999999999999999999');

将整个语句放在一行中也行不通...

update XX..YY set NewPersonNumb = to_char(NewPersonNumb + 10,'99999999999999999999999999');

也许有人会需要它

将所有内容放入 select

(to_number(translate(PersonNumb,'|',''),99999999999999999999999999999) + 10)::varchar(30) AS NewPersonNumb

我已经完成了以下对我有用的工作。

TEST.ADMIN(ADMIN)=> create table YY (PersonNumb varchar(30)) distribute on random;
CREATE TABLE
TEST.ADMIN(ADMIN)=> insert into YY values('22222222|111111|4');
INSERT 0 1
TEST.ADMIN(ADMIN)=> update yy set PersonNumb = to_number(translate(PersonNumb,'|',''),999999999999999999999999999999)+10 ;
UPDATE 1
TEST.ADMIN(ADMIN)=> select * from YY;
   PERSONNUMB
-----------------
 222222221111124