SAS:在 where 子句中将单引号与从 %BQUOTE 返回的值连接起来

SAS : Concatenate single quote with a value returned from %BQUOTE in a where clause

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

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

但是宏变量 phone_numbers 没有初始的 "'" 单引号,这会产生问题。

如何在 (%bquote(&phone_numbers.) 之前添加单引号,以便查询不会失败?

宏变量保存这样的值: 2101172076', '2101172077', '2101172078', '2101172079', '2101172080', '2101172081' 数据中缺少第一个单引号。当我从 csv 文件中读取它时。

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

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

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