아마도 단순한 것이지만 SQL에서이 작업을 수행하는 데 문제가 있습니다. (VBA는 쉽다).문자열 값 두 개 사이의 문자열 찾기
xxx_123_abcd에서 123 부분을 추출해야합니다. 때로는 문자열이 xxx_123_abcd_xxx 일 수 있기 때문에 _에 대한 코드 검색은 항상 왼쪽에서부터 수행해야합니다. 어떤 조언에 미리
감사합니다 :)
아마도 단순한 것이지만 SQL에서이 작업을 수행하는 데 문제가 있습니다. (VBA는 쉽다).문자열 값 두 개 사이의 문자열 찾기
xxx_123_abcd에서 123 부분을 추출해야합니다. 때로는 문자열이 xxx_123_abcd_xxx 일 수 있기 때문에 _에 대한 코드 검색은 항상 왼쪽에서부터 수행해야합니다. 어떤 조언에 미리
감사합니다 :)
사용 CHARINDEX를 사용할 수 있습니다. 이런 식으로 뭔가 작업을해야합니다 :
SELECT
SUBSTRING(MyColumn, CHARINDEX('_', MyColumn)+1,
CHARINDEX('_', MyColumn, CHARINDEX('_', MyColumn)+1)-CHARINDEX('_', MyColumn)-1)
FROM
MyTable
MyColumn는 = xxx_123_abcd_xxx
은 위의 코드를 사용하여 123
을 생산하고 있습니다.
가정 : 찾고있는 문자열은 밑줄의 첫 번째 및 두 번째 발생으로 묶입니다.
답변 해 주셔서 감사합니다. 모두에게, 내가 찾고 있던 반환 값이 두 didgits 일 수 있다고 지정 했어야했다. –
설명 here와 같은 사용자 정의 분할 기능을 사용하십시오. xxx_123 부분은 같은 길이가 항상 경우
, 당신은 또한 당신이 SUBSTRING에 필요한 문자열의 일부를 추출 할 수 있도록, 밑줄을 검색
SUBSTRING('xxx_123_abcd',5,7)
가정
이 작동
SELECT SUBSTRING('xxx_123_abcd',CHARINDEX('_','xxx_123_abcd')+1,3)
너도 이와 함께 할 수있다
SELECT LEFT(Col1,PATINDEX('%[^0-9]%', Col1+'a')-1) from(
SELECT SUBSTRING(Col1, PATINDEX('%[0-9]%', Col1), LEN(Col1)) As Result From table
)x
이것은 잘 설명되지 않았다. 당신이 필요로하는 것을 정확하게 정할 수 있습니까? –
제 조언은 : 부분 문자열에 관심이 있다면 rdbms에서 'xxx_123_abcd_xxx'와 같은 문자열을 피하십시오. 'xxx', '123', 'abcd', 'xxx'대신 네 개의 열이 있어야합니다. 문자열 조작에 관해서는 무엇을 추출 하시겠습니까? 첫 번째 정수? 두 번째 부분 문자열? –
숫자는 항상 123입니까? 길이는 항상 3 자리입니까? –