是否有一个SAS proc SQL函数,我可以使用它来提取string的左侧部分。它类似于LEFT函数sql server。在SQL中我有left(11111111, 4) * 9 = 9999
,我想在SAS proc SQL中有类似的东西。任何帮助将不胜感激。
答案 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功能。如果你需要帮助,我建议发布一个新问题。