2010-06-09 5 views
2

현재 varchar 필드가 있습니다. 구분 기호는 "$ P $ P $"입니다.SQL Server의 문자열 업데이트

구분 기호는 varchar 데이터에 적어도 한 번 이상 최대 두 번 나타납니다.

예 : 구분 기호가 두 번 나타나면

Sample Heading$P$P$Sample description$P$P$Sample conclusion 

Sample Heading$P$P$Sample Description 

, 내가 구분 기호의 두 번째 occurance 전에 텍스트를 삽입해야합니다.

예 :

Sample Heading$P$P$Sample DescriptionINSERT TEXT HERE$P$P$Sample Conclusion 

구분 기호가 한 번 발생하면, 그때 필드의 끝에 텍스트를 삽입해야합니다.

예 :

이는 SQL 쿼리에서 수행 할 수있는 방법
Sample Heading$P$P$Sample DescriptionAPPEND TEXT HERE 

?

+4

세 개의 개별 필드를 처리 할 수 ​​있습니까? – Nate

답변

1

많은 문자열 조작을 수행하려는 경우 CLR (.net) 기능을 사용할 수 있습니다. SQL Server는 문자열 조작을 위해 정확하게 만들어지지 않았으므로

또는이 데이터를 응용 프로그램으로 가져 와서 코드에서 수행하십시오.

는 난 당신이 SQL Server String functions

0

CHARINDEX 기능을 사용하면 검색의 시작 위치를 지정할 수 있습니다 옵션 3 매개 변수가 기본값을 사용하여 그것을 할 수 있다고 생각합니다. 이것을 사용하여 CharIndex를 사용하여 두 번째 문자열을 찾을 수 있습니다. stuff 함수를 사용하여 문자열을 다른 문자열에 삽입 할 수도 있습니다.

예 :

Declare @Temp Table(Data VarChar(8000)) 

Insert Into @Temp Values('Sample Heading$P$P$Sample description$P$P$Sample conclusion') 
Insert Into @Temp Values('Sample Heading$P$P$Sample Description') 

Select len(Data), 
     CharIndex('$P$P$', Data + '$P$P$',CharIndex('$P$P$',Data) + 1), 
     Stuff(Data + ' ', CharIndex('$P$P$', Data + '$P$P$',CharIndex('$P$P$',Data) + 1), 0, 'Text Here') 
From @Temp 

나는 그것이 엉망처럼 보인다 실현,하지만 난 당신이 미래에 비슷한해야 할 수도 있기 때문에이 어떻게 작동하는지 이해하는 것이 좋습니다 않습니다.

0

구분 기호를 사용하는 대신 3 열을 만들지 않거나 하나만 -> xml 필드 만 사용 하시겠습니까?