Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zmiana części stringu po separatorze
Forum PHP.pl > Forum > Przedszkole
L0k0
Witam!

Mam takiego stringa:

Kod
xxxx|1234|yyyy|


i chciałbym aby wynik końcowy był taki:

Kod
xxxx yyyy|1234||


Zdaję sobie sprawę, że to będzie działanie dwuczęściowe: znalezienie stringa i skopiowanie go w odpowiednie miejsce, albo i trzyczęściowe: znalezienie stringa, znalezienie miejsca do skopiowania i skopiowanie w to miejsce).

W celu dokonania pierwszej części znalazłem poniższy kod:

  1. SELECT
  2. SUBSTR(Adresat,
  3. LOCATE('|', Adresat)+1,
  4. (char_length(Adresat) - LOCATE('|', REVERSE(Adresat)) - LOCATE('|', Adresat)))
  5. FROM ibank.Adresat WHERE id=107479


Jednak wynik tego kodu to:

Kod
1234|yyyy


Wybrane zostało wszystko pomiędzy zewnętrznymi separatorami. Nie wiem jak zrobić, żeby wybrać tylko string między drugim i ostatnim separatorem?

Pewnie jeśli ogarnę to to będę mógł wybrać tekst od zera do pierwszego separatora i dokleić skopiowany.

Jakby ktoś miał jakiś pomysł to z góry dziękuję.

ROZWIĄZANIE (może komuś się przyda)

Kod
SELECT Adresat,
CONCAT(
    SUBSTRING(Adresat, 1, LOCATE('|', Adresat) - 1),
    " ",
    SUBSTRING(Adresat, LOCATE('|', Adresat, (LOCATE('|', Adresat) + 1)) + 1),
    SUBSTRING(Adresat, LOCATE('|', Adresat), LOCATE('|', Adresat, (LOCATE('|', Adresat) + 1)) - (LOCATE('|', Adresat) - 1))
)
FROM ibank.Adresat WHERE id=107479
nospor
Wybacz, ze się z lekka wtrące, pomimo że już problem jest rozwiązany, ale z doswiaczenia na forum wiem, ze w wiekszosci wypadkow, ludzie potrzebują takich rzeczy, by je potem wyswietlac/obrabiac w php. Jesli więc i ty tutaj, potrzebujesz tego formatu na rzecz wykorzystania w php, to takie kombinowanie w mysql jest bezsensu. O wiele szybciej i prosciej zrobilbys to w php.

Jesli zas bylo ci to potrzebne tylko i wyłącznie na poziomie mysql, to uznajmy moj post za niebyly smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.