Pytanie Szukanie w tekście

Odpowiedz Nowy wątek
2018-11-19 22:07
0

Witam,

Jestem nowy na forum i z sql też miałem małą styczność. Sprawa wygląda tak.
Posiadam Tabelę w której w jednej kolumnie jednym polu jest wpisywane np:
Nadanie 123452
Odbiór 123452
Brak dysku (nie zawsze jest wpisywane)

Potrzebuję z tego pola wyciągnąć liczbę, która znajduję się po słowie odbiór "123452",liczbę po słowie nadanie "123452" oraz wszystko po słowie brak ' dysku.... Natomiast jeśli nie będzie wpisane nic po słowie odbiór, żeby było napisane NULL

Próbowałem zapytaniem :
SUBSTRING(tabela.kolumna, CHARINDEX(' ',tabela.kolumna,,36),20) as BRAK, - wypisuje po spacji, lecz jesli nie mamy wpisu brak wyświetla pierwsze 20 znaków z wiersza
SUBSTRING(tabela.kolumna, PATINDEX('%____ÓR%',tabela.kolumna),10) AS odbior, - wypisuje lecz ze słowem odbiór

Pozostało 580 znaków

2018-11-21 01:30
1
select regexp_substr(n, '(?<=nadanie ?|Odbiór ?)[0-9]+|(?<=Brak Dysku ?).+') from hjd;

Jest jeszcze coś takiego jak "\K", ale tego operatora, czy podobnego chyba nie obsługuje MySQL (POSIX (ERE)). Trzeba też pamiętać, że chyba nie można podawać nie stałych długości dla positive i negative lookbehind, czyli takie coś jak "(?<=.*)" jest raczej niedozwolone.

Pozostało 580 znaków

2019-08-22 11:16
0

Odświeżam temat tym razem posiadam 4 dane :)

Nadanie 123456789
Odbiór 123456789
Brak dysku (nie zawsze jest wpisywane)
Zaopatrzenie ryza papieru itp. (nie zawsze jest wpisywane)

Sprawa wygląda tak, że poprzednie rozwiązanie działało przy 3 zmiennych, ale już przy 4 zaczyna się psuć.
Czy jakieś inne pomysły ? np. Szukaj słowo Brak i wypisz wszystko po nim do słowa zaopatrzenie ?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0