在SAS中提取字符串的左侧部分?
是否有一个函数SAS proc SQL,我可以使用它来提取字符串的左侧部分。它类似于左侧函数SQL server。在SQL中,我有在SAS中提取字符串的左侧部分?,sas,proc-sql,Sas,Proc Sql,是否有一个函数SAS proc SQL,我可以使用它来提取字符串的左侧部分。它类似于左侧函数SQL server。在SQL中,我有左(11111111,4)*9=9999,我想在SAS proc SQL中做一些类似的事情。任何帮助都将不胜感激。substr(“一些文本”,1,4)将为您提供“一些”。此函数在许多SQL实现中的工作方式相同 另外,请注意,这是一个字符串函数,但在您的示例中,您将其应用于一个数字。SAS将允许您这样做,但一般来说,明智的做法是使用put()和input()函数控制字符
左(11111111,4)*9=9999
,我想在SAS proc SQL中做一些类似的事情。任何帮助都将不胜感激。substr(“一些文本”,1,4)
将为您提供“一些”。此函数在许多SQL实现中的工作方式相同
另外,请注意,这是一个字符串函数,但在您的示例中,您将其应用于一个数字。SAS将允许您这样做,但一般来说,明智的做法是使用put()
和input()
函数控制字符串和数字之间的转换,以保持日志整洁,并确保仅在实际需要的地方进行转换。您可能正在寻找函数
SUBSTRN(string, position <, length>)
SUBSTRN(字符串,位置)
论据
字符串指定字符或数字常量、变量、,
或表达
如果字符串是数字,则将其转换为
使用最佳32。格式。移除前导和尾随空白,以及
未向SAS日志发送任何消息
位置是一个整数,指定第一个位置
子字符串中的字符
length是指定子字符串长度的整数。如果
如果不指定长度,SUBSTRN函数将返回子字符串
从指定的位置延伸到
绳子
我觉得你想重复子字符串而不是乘法,所以我添加了
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;
正如其他人所指出的,
substr()
是您正在寻找的函数,尽管我觉得更有用的答案也会“教您如何钓鱼”
了解SAS函数的一个很好的方法是按类别在google上搜索SAS函数
,在撰写本文时,这将指导您:
为了了解所有可用的功能,至少需要浏览一下这个列表一次
如果您要查找特定版本,可能需要在搜索中包含SAS版本号。请注意,上面的链接适用于9.2
如果您已经扫描了所有函数,但仍然找不到要查找的函数,那么您的下一个选择可能是使用
proc fcmp
编写您自己的SAS函数。如果您在这方面需要帮助,我建议您发布一个新问题。SUBSTRN在大多数情况下都不是惯用的SUBSTRN
与SUBSTR
基本相同,只是它可以返回空字符串,而SUBSTR不能(在SAS中,大多数情况下,空字符串是不可能的,因此后来添加了一些可以返回的函数TRIMN和SUBSTRN)。通常你不会使用那个版本,除非你确实需要一个空字符串。非常感谢Vasja,真的很感谢第二个适合我的。它确实有效。