SQL Server의 String에서 "#"추기경 다음에 나오는 숫자를 추출하려고합니다. 또한 나는 "#"simbol에 붙어 있지 않은 모든 숫자를 무시하고 싶다. 이를 위해 나는 이런 식으로 뭔가 만들어 :SQL Server의 문자열에서 int를 추출하십시오.
DECLARE @val nvarchar(50)
SET @val = '#5777 some text'
PRINT SUBSTRING(@val, PATINDEX('%#[0-9]%', @val) + 1,
PATINDEX('%[^0-9]%', SUBSTRING(@val,
PATINDEX('%#[0-9]%', @val) + 1, LEN(@val))) - 1)
----------
@val = '#5777 some text':
result = 5777
@val = '#5777'
result = error
그것은 잘 작동을하는 경우 수 그 후하지만 일부 텍스트로 숫자 숫자는 내가라는 오류가 obvisualy 마지막 문자 인 경우
" 은 왼쪽 또는 SUBSTRING 함수에 전달 된 매개 변수 길이가 잘못 나는 같은 것을 할 수 물론 "
:
DECLARE @val nvarchar(50)
SET @val = '#5777'
PRINT SUBSTRING(@val, PATINDEX('%#[0-9]%', @val) + 1,
CASE WHEN PATINDEX('%[^0-9]%', SUBSTRING(@val,
PATINDEX('%#[0-9]%', @val) + 1, LEN(@val))) = 0 THEN
LEN(@val) ELSE
PATINDEX('%[^0-9]%', SUBSTRING(@val,
PATINDEX('%#[0-9]%', @val) + 1, LEN(@val))) - 1
END)
----------
result = 5777
을
제 질문은 이렇습니다 : 더 간단하고 효율적인 방법으로 이러한 목적을 달성 할 수있는 방법이 있습니까?
는
예. 번호는 별도의 열에 저장하십시오. :) –
@ AlvinThompson 불행히도 나는 그것을 할 수 없다. 사용중인 소프트웨어를 변경할 수 없습니다. ( – belyid
문자열 끝 부분에 공백을 추가하지 마십시오. – podiluska