在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.格式。使用的信息不会改变。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...