Proc SQL 其中计算值以

Proc SQL where calculated value starts with

我正在写一个 proc sql 语句,我想在映射到字符时将某些值以 '3''1' 开头的条目子集化(我正在连接许多数据集,其中一些使用数字编码,一些使用字符编码。)数据从通过 libname 语句引用的 sas7bdat 文件加载。

我想我知道如何在 SQL where 字符串中分别执行这些操作,但我不知道如何一起执行它们:

where VALUE like '3%'
where VALUE in ('3', '1')
where VALUE in (3, 1)

但我不确定如何映射到字符数据类型,然后选中以 '3''1' 开头的两个框。我相信有一些方法可以计算调用中的值,但我不知道如何转换为字符。

其中VALUE为字符串,长度为两个字符。如果它是整数,则该数字永远不会超过两位数,值范围从 1 到 99。

您可以使用 PUT() 或 PUTN() 函数将数字转换为字符串。您可以在格式上使用 -L 修饰符,也可以只使用 LEFT() 或 STRIP() 函数从结果中删除前导空格。

   create table want as 
     select * from (

   select put(num_id,10.-L) as id 
        , ....
   from ds1
   union 
   select char_id as id
        , ...
   from ds2
     
     )
     where char(id,1) in ('1','3')
   ;

您尝试过 colon operator 吗?

where VALUE in: (3, 1)