【发布时间】:2016-12-03 00:03:50
【问题描述】:
可以使用 SAS (Proc SQL) 下载大数据。
有时我需要查看一个特定的客户编号或几个客户编号,并且同样经常需要查看每个客户编号。
我想设置一个宏变量,以便用户可以输入他们需要的客户编号,或者可以输入一些包含所有内容的简短版本。
即%Let dCustomer_Number = in (3123, 1234) 其中 &dCustomer_Number 将位于查询的 WHERE 部分。
一位同事告诉我,在 SQL 中,您可以使用 *(星号)来包含每个客户编号。
我遇到的最接近的是“%”,但这似乎不适用于数值变量。有没有类似的方法可以使用?
我知道删除客户编号过滤器的 where 语句可能很容易,但我不希望用户实际更改代码,只需要更改开头的宏变量。
谢谢
【问题讨论】:
-
我收到错误:使用 where customer_number = like '%' 时,Like 运算符需要字符操作数
-
即使 customer_number 是数字,你仍然可以通过将 customer_number 转换为字符来使用 like '%',例如:proc sql; select * from have where put(customer_number,4.) like '3%';退出;它将选择 customer_number 以 3 开头的所有客户。