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
我有一个 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