我有一个字段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');
答案 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