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? |
| 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)
|