główna strona
wróć
[MySQL] Jak usunąć wszystkie znaki w polu tabeli znajdujące się po znaku końca linii?
Ostatnia zmiana: 22.11.2008, Autor artykułu: Waldemar Miotk
artykul-0014.jpgZacznijmy od razu od przykładu: masz tabelę w bazie danych ze znakami końca linii w polu tekstowym. Chciałbyś usunąć cały tekst znajdujący się po prawej stronie znaku końca linii, z tym że jeżeli nie ma znaku końca linii to tekst powinien pozostać taki jaki jest.  MySql oczywiście umożliwia i takie działanie.

Po pierwsze musimy ustalić w którym miejscu znajduje się pierwszy znak końca linii. Przypuśćmy, iż nazwą pola jest: nazwa. Wykonujemy to przy pomocy funkcji INSTR():
 
INSTR(nazwa,'\n')

Jeżeli wiemy już gdzie znajduje się znak końca linii możemy usunąć wszystko co znajduje się za tym znakiem (wraz ze znakiem) w prawo. A w zasadzie oznacza to pozostawienie tylko pierwszej części nazwy. Wykorzystamy do tego funkcję SUBSTRING(), która wycina fragment ciągu:

 
SUBSTRING(nazwa,1,INSTR(nazwa,'\n')-1)
 

Mamy już fragment pola do znaku końca linii. Z tym, że jeżeli nie ma takiego znaku w polu, to zostanie on całkowicie wycięty. Aby do tego nie dopuścić stosujemy instrukcję warunkową, która w przypadku braku znaku poda pełną zawartość pola nazwa:

IF((INSTR(nazwa,'\n')>0), SUBSTRING(nazwa,1,INSTR(nazwa,'\n')-1), nazwa)

Oczywiście znaku nie ma jeżeli funkcja INSTR() podaje wartość 0.

Zanim się zacznie zmieniać dane należy sprawdzić, czy wszystko działa jak należy:
 
SELECT IF((INSTR(nazwa,'\n')>0), SUBSTRING(nazwa,1,INSTR(nazwa,'\n')-1), nazwa), nazwa FROM tabela_z_danymi

No i teraz wystarczy podłożyć to do zwykłej instrukcji UPDATE aby uzyskać odpowiedni wynik - zmiany w bazie danych:
 
UPDATE tabela_z_danymi SET nazwa = IF((INSTR(nazwa,'\n')>0), SUBSTRING(nazwa,1,INSTR(nazwa,'\n')-1), nazwa)

 
Komentarze(0)

Podpis:
W celu potwierdzenia, zaznacz pole pod znakiem: 7
Capcha
(c)2007-2016 Waldemar Miotk - ostatnia aktualizacja silnika 06.02.2016 - Twój IP: 54.87.18.165. Ta strona, aby lepiej działać, używa plików cookie przechowywanych na komputerach użytkowników. Wszystkie prawa do tekstów zamieszczonych na stronie są zastrzeżone, chyba że przy konkretnym tekście znajduje się inna informacja.
go up