2014-10-14 2 views
2

string.it의 왼쪽 부분을 추출하는 데 사용할 수있는 SAS proc SQL 함수가 LEFT 함수 SQL Server와 비슷합니다. SQL에서 나는 left(11111111, 4) * 9 = 9999을 가지고 있는데, 나는 비슷한 SAS proc SQL을 원한다. 어떤 도움을 주시면 감사하겠습니다.SAS에서 문자열의 왼쪽 부분을 추출 하시겠습니까?

답변

2

substr("some text",1,4)은 "약간"을 줄 것입니다. 이 함수는 많은 SQL 구현에서 동일한 방식으로 작동합니다.

또한이 함수는 문자열 함수이지만 예제에서는 숫자에 적용합니다. SAS는 이것을 할 수는 있지만 일반적으로 문자열과 숫자 간의 변환을 제어하는 ​​것이 현명합니다. put()input()은 로그를 깨끗하게 유지하고 실제로 의도하는 곳만 변환하는 기능을 제공합니다.

2

당신은 SUBSTRN 기능을 찾고 수 있습니다 ..

SUBSTRN(string, position <, length>) 

인수

문자열는 문자 또는 숫자 상수, 변수, 또는 표현식을 지정합니다.

문자열이 숫자 인 경우 이 BEST32를 사용하는 문자 값으로 변환됩니다. 체재. 선행 및 후행 공백이 제거되고 메시지가 SAS 로그로 전송되지 않습니다.

위치은 부분 문자열에서 첫 번째 문자의 위치를 ​​지정하는 정수입니다.

길이은 부분 문자열의 길이를 지정하는 정수입니다. 길이를 지정하지 않으면 SUBSTRN 함수는 지정한 위치에서 문자열의 끝까지 확장되는 하위 문자열 을 반환합니다.

+0

대부분의 경우 SUBSTRN은 관용적이지 않습니다. 'SUBSTRN'은 기본적으로'SUBSTR'과 기본적으로 같습니다. 단, SUBSTR은 null을 반환 할 수 있지만 null 문자열은 반환 할 수 없습니다. 대부분의 경우 SAS에서는 null 문자열을 사용할 수 없기 때문에 나중에 TRIMN과 SUBSTRN을 추가 할 수 있습니다. 일반적으로 null 문자열의 가능성이 필요하지 않으면 해당 버전을 사용하지 않습니다. – Joe

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; 
+0

많은 분들께 감사드립니다. Vasja, 정말 제 경우에 제 2의 옷을 가장 좋아합니다. 일을했습니다. – staq

1

, substr(), 당신이 찾고있는 기능입니다.

SAS 기능에 대해 알아내는 가장 좋은 방법은이 게시물을 작성하는 시간에 당신을 지시 할 sas functions by category 구글하는 것입니다

SAS Functions and CALL Routines by Category

그것은 적어도 한 번 만에이 목록을 통해 가치가 검사입니다 사용 가능한 모든 기능에 대한 아이디어를 얻으십시오.

특정 버전을 사용한 경우 검색에 SAS 버전 번호를 포함 할 수 있습니다. 위의 링크는 9.2에 대한 것입니다.

모든 기능을 검사했지만 여전히 원하는 것을 찾을 수없는 경우 다음 옵션은 proc fcmp을 사용하여 사용자 고유의 SAS 기능을 작성하는 것입니다.너가 이것에 도움을 필요로하는 경우에 나는 새로운 질문을 배치 한 것을 건의한다.

관련 문제