SQL update kolumny, usuwanie części rekordu po określonym znaku

SQL update kolumny, usuwanie części rekordu po określonym znaku
K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Hej
Mam problem z bazą danych.
Czy wiecie może jak zaktualizować dane w tabeli aby po znaku " spacja .K" reszta rekordu była usunięta?
Np:

Drzonowo K. Kołobrzegu zostaje Drzonowo
Nowa Cerkiew K. Morzeszczyna zostaje Nowa Cerkiew

Z góry dzięki za pomoc

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
0

Twoja baza danych wspiera regexpy?

RegEx with update query my sql

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

@KamilAdam: Niestety nie

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
2

Ale SUBSTRING_INDEX jest?

Kopiuj
UPDATE mytable 
   SET column1 = SUBSTRING_INDEX(column1, ' K. ', 1)
  WHERE column1 LIKE '% K. %'

Nie daje gwarancji że zadziałą, ale od czegoś takiego bym zaczął

PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
1

W ogóle co to za baza? Jeśli nie wyrażenia regularne, to można kursorem przejechać po wynikach i sprawdzać co jest w danej kolumnie, ale i tak baza musi tu "umieć" procedury i operacja na ciągach znaków.

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

POSITION ( LOCATE / SUBSTRING_INDEX) + LEFT

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

@KamilAdam: Niestety SUBSTRING_INDEX również nie działa.
Jesli uzywam do tego samego substringa mam komunikat 'Argument data type varchar is invalid for argument 2 of substring function.'

@PerlMonk: Jest to baza Miast utworzona w SQL Server Management Studio

WL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1084
0
karol1992 napisał(a):

@KamilAdam: Niestety SUBSTRING_INDEX również nie działa.

Nie, to Ty nie działasz, a nie baza.
Poza tym MSSQL nie wspiera wyrażeń RegExp?
No to proszę:
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms187489(v=sql.105)?redirectedfrom=MSD

Jesli uzywam do tego samego substringa mam komunikat 'Argument data type varchar is invalid for argument 2 of substring function.'

Przecież masz komunikat, źle określasz argumenty.
Manuala poczytaj może...

@PerlMonk: Jest to baza Miast utworzona w SQL Server Management Studio

A po tym wpiszę wnoszę, że nie masz zielonego pojęcia o tym co robisz.

FA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 218
3
wloochacz napisał(a):

A po tym wpiszę wnoszę, że nie masz zielonego pojęcia o tym co robisz.

Jasne, że nie ma.
Tak na szybko.

Kopiuj
UPDATE tabela 
SET kolumna=LEFT(kolumna,CHARINDEX(' .K',kolumna)-1)
WHERE kolumna LIKE '% .K%'

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.