如何解决在SAS中将16位帐号从字符转换为数字
您好,所有Iam都试图将16位数字的帐号转换为sas中的字符到数字 Account_char = 123456789982635 所以我用了input(account_char,16)
我获取的数字输出转换为3.743554E14
有人可以帮助我哪里出问题了。 我需要以数字形式输出十六位数的帐号。
解决方法
您发布的电话号码有15位数字。不是16。
但是,你们都很好。只是格式:
A = fields.Integer(store=True,compute='_compute_A',inverse='dummy_inverse')
B = fields.Integer(store=True,compute='_compute_B',inverse='dummy_inverse')
C = fields.Integer(store=True,compute='_compute_C',inverse='dummy_inverse')
@api.depends("A")
def _compute_B(self):
self.B = A
@api.depends("B"):
def _compute_C(self):
self.C = B
def dummy_inverse(self):
return True
,
假定您没有太大的值,以至于无法将它们唯一地存储为SAS中的数字,只需使用INPUT()或PUT()函数即可将字符串转换为数字,然后反向转换。确保使用默认的BEST12以外的格式。格式以显示数字,以便所有数字都可以打印。
SAS代码示例:
data table_w_num;
set table_w_char;
account_num = input(account_char,16.);
format account_num 16.;
run;
data table_w_char;
set table_w_num;
account_char = left(put(account_num,16.));
run;
使用宏变量的SQL示例:
select account_char into :mvar1 from table_w_char;
select * from table_w_num where account_num = &mvar1;
select quote(strip(put(account_num,16.))) into :mvar2 from table_w_num;
select * from table_w_char where account_char = &mvar2;
使用联接的SQL示例
select * from table_w_num n inner join table_w_char c
on n.account_num = input(c.account_char,16.)
;
select * from table_w_num n inner join table_w_char c
on c.account_char = strip(put(c.account_num,16.))
;
如果字符字段的前导零使用Z16。格式而不是16.格式。使用的信息不会改变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。