Strona testowana na następujących przeglądarkach internetowych
Mozilla Firefox 3.6.3
,
Google Chrome 3.0,
Internet Explorer 8.0

Gościmy

Naszą witrynę przegląda teraz 22 gości 

Jak usunąć wszystkie znaki w polu tabeli znajdujące się po znaku końca linii?
(3 głosów, średnia ocena 5.00 na 5)
Baza danych MySQL
sobota, 22 listopada 2008 21:11

Masz tabelę w bazie danych ze znakami końca linii w polu tekstowym. Chciałbyś usunąć cały tekst zanjdują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 najduje 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)
 

 

Dodaj komentarz