选择数字列作为字符串

hfsqlsce  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(334)

是否可以使用sas中的proc sql选择数字列作为字符串?
例如,我有这个表(表1):

+------+------+------+--------------+--+
| id_1 | id_2 | id_3 |     date     |  |
+------+------+------+--------------+--+
|    3 |    7 |    3 |  25/06/2017  |  |
|    4 |   11 |    9 |  25/06/2020  |  |
+------+------+------+--------------+--+

id\ 1、id\ 2和id\ 3可以是数字或字符串。
我想创建一个表(表2),其中这三列的类型应该是string
我写了这个代码:

proc sql;

Create table table_2 as 

select date, Convert(varchar(30),a.id_1), Convert(varchar(30),a.id_2), Convert(varchar(30),a.id_3)

from table_1   a

;quit;

但它不起作用

zysjyyx4

zysjyyx41#

最好的解决方案是修复上游流程,以便始终使用一致的类型生成变量。
在sas中,可以使用put()函数将值转换为字符串,只需使用适合变量类型的格式即可。例如,如果您的变量是数字,但它应该是9位数字长的有效前导零,那么您将希望使用z9。格式化以转换它并表示前导零。

select put(id_1,z9.) as id_1

如果要在不知道变量类型的情况下将数字或字符变量转换为字符串,可以使用cats()函数。但是,您将无法控制如何将数字转换为字符串。使用length=属性强制sas定义长度为30的变量。

select cats(id_1) as id_1 length=30
xam8gpfp

xam8gpfp2#

试试看。。。

SELECT date, CAST(a.id_1 AS varchar(30)), CAST(a.id_2 AS varchar(30)), CAST(a.id_3 AS varchar(30))
FROM table_1   a

相关问题