SQL的INTO子句能否将变量选入不同表?SAS PROC SQL特性疑问
关于SAS PROC SQL中INTO子句的疑问解答
我在学习SAS批量将字符变量转换为数值变量的方法时,遇到了PROC SQL中的一段代码:
proc sql noprint; select trim(left(name)), trim(left(newname)), trim(left(newname))||'='||trim(left(name)) into :c_list separated by ' ', :n_list separated by ' ', :renam_list separated by ' ' from vars;
这段代码里的INTO子句用法是SAS PROC SQL特有的功能,不属于标准SQL的范畴,具体说明如下:
- 标准SQL的INTO子句仅用于将查询结果写入新表(例如
SELECT ... INTO new_table FROM source_table),不支持将结果赋值给宏变量,也没有separated by这类用于拼接生成变量列表的语法。 - 代码中的
:c_list、:n_list、:renam_list是SAS的宏变量,PROC SQL通过该语法把查询结果分别拼接成空格分隔的字符串,存入这三个宏变量,后续可在SAS代码中引用这些宏变量实现批量变量处理。 - 其他SQL环境没有SAS的宏变量体系,因此这种语法在标准SQL或其他数据库的SQL沙箱中无法运行。
内容的提问来源于stack exchange,提问作者Magnus
相关产品推荐
相关产品推荐

