Konwertowanie string -> int

0

Witam serdecznie. Mam problem z konwertowaniem danych. Mianowicie dane w kolumnie numer_klienta są varcharem i wyglądają miedzy innymi tak:

'1992-12-992-0'
'1993-12-9222-2'

Chciałbym pobrać liczbę, która znajduje się jako trzecia, czyli odpowiednio 992 i 9222. Zastosowałem funkcję:

SELECT id_dzialu, CONVERT(SUBSTRING_INDEX(numer_klienta,'-',-2),
                                              UNSIGNED INTEGER) AS pozycja
FROM dzialy;

Wszystko jest ok, ale chciałbym na podstawie tego co wyświetli mi ten select stworzyć tabelę:

CREATE TABLE pozycje(
SELECTt id_dzialu, CONVERT(SUBSTRING_INDEX(numer_klienta,'-',-2),
                                              UNSIGNED INTEGER) AS pozycja
FROM dzialy);

I w tym przypadku wyrzuca błąd:

Data truncation: Truncated incorrect INTEGER value: '992-0'.

Dlaczego tak się dzieje? Pozdrawiam.

0
sigmaalgebra napisał(a):

Witam serdecznie. Mam problem z konwertowaniem danych. Mianowicie dane w kolumnie numer_klienta są varcharem i wyglądają miedzy innymi tak:

'1992-12-992-0'
'1993-12-9222-2'

Chciałbym pobrać liczbę, która znajduje się jako trzecia, czyli odpowiednio 992 i 9222. Zastosowałem funkcję:

SELECT id_dzialu, CONVERT(SUBSTRING_INDEX(numer_klienta,'-',-2),
                                              UNSIGNED INTEGER) AS pozycja
FROM dzialy;

Wszystko jest ok, ale chciałbym na podstawie tego co wyświetli mi ten select stworzyć tabelę:

CREATE TABLE pozycje(
SELECTt id_dzialu, CONVERT(SUBSTRING_INDEX(,'-',-2),
                                              UNSIGNED INTEGER) AS pozycja
FROM dzialy);

I w tym przypadku wyrzuca błąd:

Data truncation: Truncated incorrect INTEGER value: '992-0'.

Dlaczego tak się dzieje? Pozdrawiam.

te eskuelowiec
zrób tak:
SUBSTRING_INDEX(SUBSTRING_INDEX(numer_klienta, "-", -2), "-", 1);

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