Come convertire una stringa in numero intero utilizzando la query SQL su SQL Server 2005?
Come convertire una stringa in numero intero utilizzando la query SQL su SQL Server 2005?
Risposte:
Puoi usare CAST o CONVERT :
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
IsNumeric()
può produrre alcuni risultati perversi. Restituirà VERO per la stringa "-.", Che provocherà comunque un errore quando si tenta di eseguirne il cast su un numero.
Inoltre, tieni presente che durante la conversione da stringa numerica, '56.72'
ad esempio a INT, potresti riscontrare un errore SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Per aggirare questo basta fare due convertiti come segue:
STRING -> NUMERIC -> INT
o
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Quando si copiano i dati da TableA a TableB, la conversione è implicita, quindi non è necessaria la seconda conversione (se si è felici di arrotondare per difetto all'INT più vicino):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
A partire da SQL Server 2012, è possibile utilizzare TRY_PARSE o TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Prova questo, ha funzionato per me in Athena:
cast(MyVarcharCol as integer)