2014-12-07 7 views
0

'블로그 작성자 2010 년 10 월 16 일 # 123456'과 같은 varchar 필드가 있습니다.SQL에서 varchar 필드의 날짜를 제거하십시오.

나는 문자를 제거했습니다. (Col, 1, patindex ('% [0-9] %', Col) -1, '') 또한 #을 대체하여 16/10/2016 123456으로 남았습니다.

I 이제 날짜를 지우고 싶습니다. 날짜는 123456 이전 또는 이후에 위치 할 수 있습니다. 날짜는 다양한 형식 일 수 있습니다.

내 마지막 목표는 123456입니다.

+0

당신은 문자열 함수로 볼 수 있었다보십시오. 공간 인덱스를 얻을 수 있다면 그 위치의 하위 문자열을 앞으로 사용할 수 있습니다. – AdamMc331

+0

Microsoft SQL Server 2008을 사용하고 있습니다. 공간의 일부 또는 전부를 사용할 수 있기 때문에 부분 문자열을 사용하는 데 어려움을 겪을 것입니다. 자유 형식 필드가 무엇인지 알지 못합니다. 사용자는 규칙을 따르지 않습니다! – LeedsWalker

+0

원하는 텍스트를 식별 할 수있는 몇 가지 규칙을 식별 할 수 없다면이를 프로그래밍 할 수 없습니다. –

답변

1

시도해보십시오. 이 수는 공백으로 '#'로 시작하고 다음에 있다고 가정 (또는 마지막) :

DECLARE @Str VARCHAR(100) 
SET @Str = 'Created by blogs 16/10/2014 #123456 more stuff' 

SELECT 
    SUBSTRING(
      SUBSTRING(@Str, CHARINDEX('#', @Str) + 1, 999), 
      1, 
      CHARINDEX(' ', 
         SUBSTRING(@Str + ' ', 
           CHARINDEX('#', @Str) + 1, 999))) 

은 열 이름으로 @Str를 교체합니다. 숫자는 마지막 때를위한 버그 수정을 추가

0

DECLARE @YourString VARCHAR(100) 
SET @YourString = 'Created by blogs 16/10/2014 #123456 more stuff' 

SELECT LEFT(RIGHT(@YourString,PATINDEX('%[0-9]%',@YourString)-1),CHARINDEX(' ',RIGHT(@YourString,PATINDEX('%[0-9]%',@YourString)-1))) 
관련 문제