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)
我正在写一个 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)