Masowa zmiana rekordów w MySQL

Masowa zmiana rekordów w MySQL
NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0

Witam serdecznie,
Mam jedną tabelę i jedną kolumnę do zmiany.
Muszę wszystkie wpisy które są w formie jakasnazwa_1739 zamienić na jakasnazwa-1739.

Baza ma 4000000 rekordów i będę musiał ją chyba zmienić w phpmyadmin (o ile się da).

Wiecie może czy jest możliwość zmiany rekordów za pomocą zapytania?

Czy trzeba zrobić w php selcta wyświetlającego wszystkie rekordy i potem str_replace("_", "-",$dane)?

L9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frydek
  • Postów: 18
1

Update nazwa_tabeli set nazwa_kolumny= 'jakasnazwa-1739' where nazwa_kolumny = 'jakasnazwa_1739'

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
1

Finalnie można zrobić update jak podał Ci @lukee90 ale zamiast

Kopiuj
nazwa_kolumny = 'jakasnazwa_1739'

musiałbyś użyć sprytniejszego warunku z like

Kopiuj
Jeśli twój ciąg znaków zawsze kończy się na _1739 to zapytanie wyglądałoby mniej więcej tak:
```sql
update tabela set kolumna = replace(kolumna, '_', '-') where kolumna like '%_1739'
NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0
woolfik napisał(a):

Finalnie można zrobić update jak podał Ci @lukee90 ale zamiast

Kopiuj
nazwa_kolumny = 'jakasnazwa_1739'

musiałbyś użyć sprytniejszego warunku z like

Kopiuj
Jeśli twój ciąg znaków zawsze kończy się na _1739 to zapytanie wyglądałoby mniej więcej tak:
> 
```sql
update tabela set kolumna = replace(kolumna, '_', '-') where kolumna like '%_1739'

dziękuję, pomogło :)

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

@woolfik nie tak szybko... w Like _ oznacza DOKŁADNIE jeden znak, więc 'ALA1789' LIKE '%_1789' zwróci True

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.