2013-01-31 27 views
14

mam pole, które jest VARCHAR(6) Próbuję wstawić go do innej tabeli typu bigint to daje mi błądSQL, Jak przekonwertować VARCHAR na bigint?

(Błąd Konwersja z typu danych varchar do bigint

Oto co robię

CONVERT(bigint, seconds) as seconds 

Czy ktoś może pomóc w tej kwestii?

+0

Czy sprawdził pan dane, aby upewnić się, że wartości w dziedzinie jesteś konwersji są rzeczywiście kabriolet do int? –

+0

wydaje się, że jeden z twoich varcharów nie jest wymienialny ... –

+0

Mam go albo mieć wartość zerową, -liczbową i dodatnią! ale zrobiłem isnull (drugi, 0) i nadal mam ten sam problem Konwertuj (bigint, ISNULL (ts.TimeInSeconds, 0)) AS sekund – Jaylen

Odpowiedz

17

jest to odpowiedź

(CASE 
    WHEN 
    (isnumeric(ts.TimeInSeconds) = 1) 
    THEN 
    CAST(ts.TimeInSeconds AS bigint) 
    ELSE 
    0 
    END) AS seconds 
+2

Może chcesz edytować to poprawnie, ponieważ 'isnumiric' nie istnieje (sprawdź pisownię). Ponadto, nawet jeśli 'CONVERT()' (i 'ISNUMERIC()') działa na twoim komputerze, oznaczono twoje pytanie jako 'sql', które jest _language_ - twoja maszyna ma określoną _implementację_ (SQL Server). Standardem jest 'CAST (... jak BIGINT)' - dla przyszłych widzów najlepiej jest albo oznaczyć twoje pytanie odpowiednim RDBMS, albo napisać wersję "standardową". –

+0

Dzięki za to :) – Jaylen

+0

Więc chciałeś wstawić '1', jeśli wartość w' TimeInSeconds' jest poprawną liczbą całkowitą i '0' jeśli nie jest poprawną liczbą całkowitą? Czy nie chcesz wstawić wartości z kolumny "TimeInSeconds"? –

1

alternatywą byłoby zrobić coś takiego:

SELECT 
    CAST(P0.seconds as bigint) as seconds 
FROM 
    (
    SELECT 
     seconds 
    FROM 
     TableName 
    WHERE 
     ISNUMERIC(seconds) = 1 
    ) P0 
2

Myślę, że kod jest w porządku. Jeśli uruchomisz poniższy kod, konwertuje on łańcuch "60", który jest traktowany jako varchar i zwraca liczbę całkowitą 60, jeśli w ciągu sekundy znajduje się ciąg zawierający całkowitą liczbę, która działa.

select CONVERT(bigint,'60') as seconds 

i zwraca

60 
Powiązane problemy