Jak usunąć dowolny ciąg znaków

0

Witam,

Jak usunąć dowolny ciąg znaków umieszczony pomiędzy dwoma znakami ##.
Czyli jeżeli mam np. #cokolwiek# to cały tekst 'cokolwiek' razem ze znakami # jest usuwany.

Kawałek kodu, który teraz przerzuca jeden do jednego a mi zależy aby do 'uwagi' zostało przerzucone wszystko z '@uwagi' oprócz tekstu #cokolwiek#.

       UPDATE doksprzed
         SET uwagi = @uwagi
       WHERE doksprzed_id = @doksprzed_id 
0

Napisz coś w takim stylu:

UPDATE doksprzed
         SET uwagi = REPLACE(@uwagi, REGEXP_SUBSTR(@uwagi, '#[a-zA-Z0-9]*#'), '')
       WHERE doksprzed_id = @doksprzed_id  
0

Tylko, że ja ma MS SQL a ty podałeś funkcję z Oracla.

0

spróbuj połączeniem funkcji REPLACE, SUBSTR i CHARINDEX

0

pytanie pomocnicze: czy masz pewność, że we wszystkich rekordach występuje ciąg znaków '#ciąg_znaków#'
Z uwagi na to że nie udało mi się znaleźć szybkiego sposobu proponuję następującą kombinację:

1.Szukasz pierwszego wystąpienia znaku '#' funkcja CHARINDEX()
2.Ucinasz pierwszy ciąg znaków od początku stringa do znaku '#' funkcją LEFT()
3.Później ucinasz substringa od pierwszego wystąpienia znaku '#' do końca, funkcja SUBSTRING()

  1. szukasz drugiego wystąpienia znaku '#'
    5.wyciągasz drugiego substringa od drugiego wystąpiania znaku '#' od końca i łączysz obie części z tego punktu i punktu 2

trochę kombinacji ale działa :)

0

Nie w każdym rekordzie jest ten ciąg #ciąg_znaków#

Mam takie coś ale jak brak #ciąg_znaków# to usuwa wszystko

 UPDATE doksprzed
              SET uwagi =replace(left(@uwagi,(charindex('#',@uwagi))),'#','')
           --SET uwagi = @uwagi
            WHERE doksprzed_id = @doksprzed_id

Dodam jeszcze, że #ciąg_znaków# jest zawsze na końcu.

0
declare @x varchar(100)
select @x = 'jakis ciąg znakow#cos pomiedzy# dalej'

select 
@x
,substring(@x,charindex('#',@x),charindex('#',@x,charindex('#',@x)+1)-charindex('#',@x)+1)
,replace(@x,substring(@x,charindex('#',@x),charindex('#',@x,charindex('#',@x)+1)-charindex('#',@x)+1),'')

wynik

jakis ciąg znakow#cos pomiedzy# dalej |   #cos pomiedzy# |  jakis ciąg znakow dalej

Podstaw z @x swoja kolumnę, to zadziala tylko dla wartości w których masz dx #

0

Dzięki za wszystkie podpowiedzi i pomoc.
Temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0