首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS指数函数?

SAS指数函数?
EN

Stack Overflow用户
提问于 2014-05-10 05:34:41
回答 1查看 1.1K关注 0票数 1

有人能解释为什么下面的代码会给出两个不同的值吗?

代码语言:javascript
复制
87   data _null_;
88      length a b $14;
89      a = 'ABC.DEF (X=Y)';
90      b = 'X=Y';
91      x = index(a,b);
92      y = index('ABC.DEF (X=Y)','X=Y');
93      put x y;
94   run;

0 10
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 06:38:07

这似乎是SAS网站上的示例的确切副本,所以如果您先在那里寻找答案,这将是有帮助的。

这是他们的解释:

示例2:

在使用索引函数和TRIM函数时移除尾随空格

下面的示例显示了使用带TRIM函数和不带TRIM函数的索引函数时的结果。如果使用索引而不使用TRIM函数,则前导和尾随空格被视为节选参数的一部分。如果在TRIM函数中使用索引,TRIM将删除摘录参数中的尾随空格,如本例所示。注意,TRIM函数在索引函数中使用。无选择nostimer ls=78 ps=60;

代码语言:javascript
复制
data _null_;
   length a b $14;
   a='ABC.DEF (X=Y)';
   b='X=Y';
   q=index(a,b);
   w=index(a,trim(b));
   put q= w=;
run;

SAS将以下输出写入日志:

代码语言:javascript
复制
q=0 w=10

根据mjsqu的评论添加:

代码语言:javascript
复制
 data _null_;
   length a b $14 c $3;
   a='ABC.DEF (X=Y)';
   b='X=Y';
   c='X=Y';
   x=index(a,b);
   y=index(a,c);
   z=index(a,trim(b));
   d = "|" || a ||"|";
   e = "|" || b ||"|";
   f = "|" || c ||"|";
   put d=;
   put e=;
   put f=;
   put x= y= z=;
  run;

d=|ABC.DEF (X=Y) |
e=|X=Y           |
f=|X=Y|
x=0 y=10 z=10

您可以看到b有一个尾随空间,这是Index函数将要查找的字符串的一部分。由于在string a X=Y后面跟着),而不是空格,这意味着不会找到=> q= 0。您还可以在这里看到,如果将b的长度更改为要查找的字符串的实际长度(在本例中为3),则会给出相同的结果。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23577489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档