SAS:使用where子句中的%BQUOTE返回的值连接单引号

时间:2015-11-28 01:08:37

标签: sas sas-macro

我正在使用这样的where子句从PROC SQL中检索一些记录:

where mailing_phone_numbers in (%bquote(&phone_numbers.)); 

但宏变量phone_numbers没有初始""""单引号,它正在创建问题。

我怎么能在(%bquote(& phone_numbers。)之前附加单引号,以便查询不会失败?

宏变量包含如下值: 2101172076',' 2101172077',' 2101172078',' 2101172079',' 2101172080',' 2101172081' 数据中缺少第一个单引号。当我从csv文件中读取它时。

1 个答案:

答案 0 :(得分:1)

您可以在%bquote()中添加单引号,但需要%unquote()结果才能让PROC SQL识别引号。

where mailing_phone_numbers in (%unquote(%bquote('&phone_numbers.)))

听起来真正的问题是CSV文件。 SAS在读取以单引号开头的CSV文件中的字符串时不会有任何问题,但Excel可能会将前导单引号解释为格式化信号。这可能导致它写入一个不包含值的前导单引号的CSV文件。也许你可以从数据处理流中删除Excel?如果报价在CSV文件中,则显示您用来读取它的SAS代码,删除前导单引号。