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-19 22:27
0

A czy nie prościej to będzie Ci pobrać całą komórkę z sql, a potem ją sobie analizować i rozdzielać na elementy już w aplikacji?


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

2018-11-19 22:30
0

Niestety nie, gdyż z całego zapytania jest tworzony raport. To jest wycinek całego skryptu.

Pozostało 580 znaków

2018-11-19 22:33
0

jaki silnik sql 2017?

Pozostało 580 znaków

2018-11-19 22:46
0

sql 2012

Pozostało 580 znaków

2018-11-19 22:53
0

W tym polu dane są w ciągu czy masz tam złamanie linii?

Pozostało 580 znaków

2018-11-19 23:12
0

Sa oddzielone spacjami np. nadanie 123456 odbiór 123456

podaj kilka przykładów z zawartością pól i jaki dla tych pól ma być wynik (co może występować po brak dysku, też ciąg cyfr?) - dbuser 2018-11-20 10:32

Pozostało 580 znaków

2018-11-20 11:23
0

Temat uwazam za zamknięty.

Pozostało 580 znaków

2018-11-20 11:32
0

@hejda52: pytanie - czy znalazłeś rozwiązanie, czy temat "olałeś"? Bo jeśli masz rozwiązanie problemu to fajnie by było, żebyś się nim podzielił tutaj, może komuś się przyda w przyszłości.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

2018-11-20 16:00
1

Znalazłem rozwiązanie metodą prób i błędów.
Oto rozwiązanie.
IMG_20181119_231514.jpg

A czy możesz wkleić tutaj całe zapytanie jako kod a nie obrazek? W ten sposób wyszukiwarki będą mogły je poprawnie zaindeksować i są większe szanse, że ktoś szukający w google odpowiedzi trafi na ten wątek. - cerrato 2018-11-20 16:02

Pozostało 580 znaków

2018-11-20 17:43
2

przepisałem na szybko rozwiązanie, analogicznie zakładamy 'nadanie'

DECLARE @TEMPLATE1 nvarchar(50) = 'ODBIÓR'

case CHARINDEX(@TEMPLATE1,[KOLUMNA])
WHEN 0
THEN NULL
ELSE SUBSTRING ( [KOLUMNA], CHARINDEX (@TEMPLATE1, [KOLUMNA]) +LEN (@TEMPLATE1) +1,CHARINDEX (@TEMPLATE1, [KOLUMNA] ) +6)
END AS 'NUMER_ODBIORU'

edytowany 1x, ostatnio: hejda52, 2018-11-20 17:44

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