2016-08-12 20 views
9

Muszę pobrać dane z tabeli @temp, które ma coś takiego jak "lub ccc lub bbb lub aaa" Chcę zastąpić pierwsze wystąpienie w kosmosie, aby uzyskać coś takiego " ccc lub bbb lub aaa ". Staram rzeczy i wymienić, ale nie wydaje mi się, aby uzyskać pożądany efektZastąp pierwsze wystąpienie podciągu w ciągu znaków w SQL

Co próbowałem:

DECLARE @stringhere as varchar(500) 

DECLARE @stringtofind as varchar(500) 

set @stringhere='OR contains or cccc or ' 

set @stringtofind='or' 
select STUFF('OR contains or cccc or ',PATINDEX('or', 'OR contains or cccc or '),0 ,' ') 
+0

Czy starasz się zrobić WHERE dla dynamicznego zapytania? –

+0

Próbuję uzyskać ostateczną wartość po usunięciu pierwszego wystąpienia ciągu .. – Shobhit92

+0

Proszę [przeczytaj tę dyskusję społeczności] (http://meta.stackoverflow.com/q/326569/472495) o pilne żebranie i być poinformował, że nie jest to odpowiedni sposób na zwracanie się do wolontariuszy. Dzięki! – halfer

Odpowiedz

8

Można użyć kombinacji STUFF i CHARINDEX aby osiągnąć to, co chcesz:

SELECT STUFF(col, CHARINDEX('substring', col), LEN('substring'), 'replacement') 
FROM #temp 

CHARINDEX('substring', col) powróci indeks pierwszego występowania 'substring' w kolumnie. STUFF następnie zastępuje to wystąpienie z 'replacement'.

+0

Dziękuję bardzo, proszę pana, pracował absolutnie dobrze ... Szukane godziny nie przyniosły wystarczająco dobrego rezultatu. ... Dziękuję – Shobhit92

+0

Cieszę się, że mogę ci pomóc ... i zadałeś całkiem niezłe pytanie :-) –

+0

Trochę późno (ale zdziwiłem się, że nie było to wcześniej zauważone), ale to zdaje się zadziałać, jeśli * występuje * zdarzenie "podciągu". Jeśli tak nie jest, zwracane jest 'null'. Tak więc zalecane jest wychwycenie wyrażenia "CASE". – HoneyBadger

1

wydaje pominięcia 2 % poprzedzające i końcowe do łańcucha docelowego

spróbuj:

select STUFF(@stringhere, PATINDEX('%' + @stringtofind + '%', @stringhere), LEN(@stringtofind), ' ') 
+0

@ user3331798: proszę spróbuj – Grace

+0

dziękuję ci, że to działa również doskonale ... – Shobhit92

+0

@ user3331798: Dzięki, ale dlaczego są 2 pojedyncze cytaty w ''' 'OR zawiera lub cccc lub" '? – Grace

Powiązane problemy