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

时间:2018-04-17 08:03:32

标签: sql netezza

我有一个字段PersonNumb,它是varchar(30)并且需要转换为数字,而不是做一些算术(在这种情况下是一些简单的加法值+ 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');

2 个答案:

答案 0 :(得分:0)

也许有人会需要它

将所有内容放入选择

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

答案 1 :(得分:0)

我已经完成了以下工作。

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