2013-06-14 5 views
1

동일한 테이블의 두 번째 (새) 열로 하위 집합을 가져 와서 삽입하려는 기존 열이 있습니다.다른 열의 하위 문자열에서 한 열을 업데이트하십시오.

MyTable. [FullName] (기존 열)에 "P-13-146 PS - Goodyear - 타이어 수리"와 같은 문자열이 포함되어 있습니다.

MyTable. [ShortName]이라는 하위 문자열을 삽입하려고합니다. 값을 첫 번째 열의 값 ("P-13-146 PS")으로 변경합니다. 문제는 각 전체 이름에 대해 부분 문자열의 길이가 다르다는 것입니다. 유일하게 진정한 일관성은 두 번째 공백 문자를 원한다는 것입니다.

나는 다음과 같은 해결하기 위해 노력하고 있습니다 :

UPDATE [을 MyTable] SET [단축 이름] = ???

답변

2

이 시도 : 당신은 당신이 원하는 것을 얻을 때까지

declare @exp varchar(200) 
set @exp='P-13-146 PS - Goodyear - Tire repair' 

select RTRIM(SUBSTRING(@exp,1,CHARINDEX(' ',@exp,charindex(' ',@exp)+1))) 
+1

코드를 약간 수정하면 완벽하게 작동합니다! 감사! 타이머가 끝날 때까지 기다렸다가 응답을 응답으로 설정할 수 있습니다. UPDATE [MyTable] SET [ShortName] = RTRIM (SUBSTRING ([이름], 1, CHARINDEX (', [Name], charindex (' ', [이름]) + 1))) – Flea

+0

FullName에 공백이 두 개 미만인 경우 빈 문자열을 반환합니다. – Joe

0

그냥 문자열 조작 기능을 결합 :

경우 문의 첫 번째 부분은 두 개 미만의 공백이 이름입니다
SELECT 
CASE WHEN CHARINDEX(' ',FullName, CHARINDEX(' ', FullName)+1) = 0 THEN FullName 
ELSE SUBSTRING(FullName, 1, CHARINDEX(' ',FullName, CHARINDEX(' ', FullName)+1)-1) 
END ShortName 
FROM MyTable 

.

관련 문제