我正在使用这样的where子句从PROC SQL中检索一些记录:
where mailing_phone_numbers in (%bquote(&phone_numbers.));
但宏变量phone_numbers没有初始""""单引号,它正在创建问题。
我怎么能在(%bquote(& phone_numbers。)之前附加单引号,以便查询不会失败?
宏变量包含如下值: 2101172076',' 2101172077',' 2101172078',' 2101172079',' 2101172080',' 2101172081' 数据中缺少第一个单引号。当我从csv文件中读取它时。
答案 0 :(得分:1)
您可以在%bquote()
中添加单引号,但需要%unquote()
结果才能让PROC SQL
识别引号。
where mailing_phone_numbers in (%unquote(%bquote('&phone_numbers.)))
听起来真正的问题是CSV文件。 SAS在读取以单引号开头的CSV文件中的字符串时不会有任何问题,但Excel可能会将前导单引号解释为格式化信号。这可能导致它写入一个不包含值的前导单引号的CSV文件。也许你可以从数据处理流中删除Excel?如果报价在CSV文件中,则显示您用来读取它的SAS代码,删除前导单引号。