全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6917 18
2015-02-07
在proc sql 中,sql语句中的 [] 通配符好像不起作用

比方说
proc sql;
create table test
        as select *
        from ABC
        where x like '[B-C]%';
quit;


运行后无错误提示,但是无法实现sql中[]通配符的实现

请教各位大神,如何在proc sql 中实现[]这样的通配符功能?万分感谢!急急急!


————————————————————————————————————比如下面的代码,想实现的是将a表中开头为B到J的数据提取出来,但在proc sql中where x like '[B-J]%'被认为是筛选以[B-J]开头的数据,而不是筛选B到J开头的数据。这与SQL中不一样。
复制代码
——————————————————————————————————————————————————————具体问题如下

产品
料件编码
A产品
7213-7215,7221,72221-72223,7227,72281-72286,72288


比方说,我要处理的是一个各种产品与料件编码对应的参数表。上表的含义是,A产品是指对应8位料件编码前几位为表中范围的产品。这个参数表包含的产品很多且需要经常维护。

如何根据上面的参数表转换为根据料件编码的范围筛选不同种类产品?我不知道语句在SAS如何实现。

如果sql中的[]通配符可以使用的话,则对表中逗号进行替换为  ]%' OR x like '[  ,然后在将替换后的条件在宏中加以引用就可以了。但现在[]通配符在SAS中实现不了,我就不知道应该如何处理了。

不知道SAS中是不是有更简便的语句来直接实现?万分感谢!




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-2-7 18:27:21
调试了一下,没有问题。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-7 18:49:54
mingfeng07 发表于 2015-2-7 18:27
调试了一下,没有问题。
谢谢,但sql中[]通配符的作用如下

通配符描述
%替代一个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

例子

我们希望表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM PersonsWHERE City LIKE '[ALN]%'
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-7 19:21:03
Celsius256 发表于 2015-2-7 18:49
谢谢,但sql中[]通配符的作用如下
可以这么写:
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-7 19:46:32
mingfeng07 发表于 2015-2-7 19:21
可以这么写:
substr()需要制定起始点和字符宽度,但我要处理的数据是大批量的,且需要匹配的字符宽度是不一样的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-7 19:55:37
Celsius256 发表于 2015-2-7 19:46
substr()需要制定起始点和字符宽度,但我要处理的数据是大批量的,且需要匹配的字符宽度是不一样的。
我这代码只对应于你一楼问题,如果有别的要求,可以贴出来看看。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群