在SAS中提取字符串的左侧部分?

时间:2014-10-14 14:03:00

标签: sas proc-sql

是否有一个SAS proc SQL函数,我可以使用它来提取string的左侧部分。它类似于LEFT函数sql server。在SQL中我有left(11111111, 4) * 9 = 9999,我想在SAS proc SQL中有类似的东西。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

如果您希望重复子字符串而不是乘法,那么我只是为了好奇而添加REPEAT函数。

proc sql;
select 
  INPUT(SUBSTR('11111111', 1, 4), 4.) * 9            /* if source is char */
, INPUT(SUBSTR(PUT(11111111, 16. -L), 1, 4), 4.) * 9  /* if source is number */
, REPEAT(SUBSTR(PUT(11111111, 16. -L), 1, 4), 9)      /* repeat instead of multiply */
FROM SASHELP.CLASS (obs=1)
;
quit;

答案 1 :(得分:2)

substr("some text",1,4)会给你“一些”。在许多SQL实现中,此函数的工作方式相同。

另外,请注意这是一个字符串函数,但在您的示例中,您将其应用于数字。 SAS会让你这样做,但一般来说,控制你使用put()input()函数在字符串和数字之间进行转换是明智的,这样可以保持你的日志清洁,并确保你只是转换到实际的位置打算。

答案 2 :(得分:2)

您可能正在寻找SUBSTRN功能..

SUBSTRN(string, position <, length>)
  

参数

     

string 指定字符或数字常量,变量,   或表达。

     

如果string是数字,则将其转换为字符值   使用BEST32。格式。删除前导和尾随空白,并且   没有消息发送到SAS日志。

     

位置是一个整数,指定第一个的位置   子串中的字符。

     

length 是一个整数,指定子字符串的长度。如果   如果不指定长度,SUBSTRN函数将返回子字符串   从您指定的位置延伸到结束位置   字符串。

答案 3 :(得分:1)

正如其他人所指出的那样,substr()是你正在寻找的功能,虽然我觉得更有用的答案也会教会你如何钓鱼。

了解SAS功能的一个好方法是google sas functions by category,在撰写本文时,我会指示您:

SAS Functions and CALL Routines by Category

值得扫描一下这个列表至少一次,以了解所有可用的功能。

如果您在特定版本之后,可能需要在搜索中包含SAS版本号。请注意,上面的链接适用于9.2。

如果您已扫描完所有功能,但仍无法找到所需内容,则下一个选项可能是使用proc fcmp编写您自己的SAS功能。如果你需要帮助,我建议发布一个新问题。