Konversi string ke int menggunakan kueri sql

169

Bagaimana cara mengubah string menjadi integer menggunakan SQL query pada SQL Server 2005?

Rahul Vyas
sumber

Jawaban:

297

Anda dapat menggunakan CAST atau CONVERT :

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
CMS
sumber
4
Bagaimana cara menangkap / mencegah pengecualian ketika salah satu bidang non-numerik? Saya akan berharap untuk mengkonversi ke 0.
Chloe
40
Ditemukan:select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
Chloe
9
Hanya sepatah kata: IsNumeric()dapat menghasilkan beberapa hasil buruk. Ini akan mengembalikan BENAR untuk string "-.", Yang masih akan menyebabkan kesalahan ketika Anda mencoba untuk melemparkannya ke nomor.
Curt
3
IsNumeric akan benar untuk string dengan "-" hanya jika string tersebut numerik misalnya "-5" atau "-20", itu akan menjadi false untuk string seperti "5-", "-2-1". Jadi jika isNumeric () benar maka konversi tidak boleh membuang pengecualian
Pratyush Dhanuka
11

Perlu diketahui juga bahwa ketika mengkonversi dari string numerik '56.72'ke INT Anda mungkin menemukan kesalahan SQL.

Conversion failed when converting the varchar value '56.72' to data type int.

Untuk menyiasati ini lakukan saja dua orang yang bertobat sebagai berikut:

STRING -> NUMERIC -> INT

atau

SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)

Saat menyalin data dari TableA ke TableB, konversi tersirat, jadi Anda tidak perlu konversi kedua (jika Anda senang membulatkan ke INT terdekat):

INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Steven de Salas
sumber
8

Dimulai dengan SQL Server 2012, Anda bisa menggunakan TRY_PARSE atau TRY_CONVERT .

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)
Örjan Jämte
sumber
Jelas bukan jawaban yang tepat untuk pertanyaan asli karena itu terkait dengan SQL Server 2005, tetapi karena ini adalah 2019 dan lebih sedikit orang yang terikat dengan versi lama dari SQL Server, jawaban ini pasti membantu.
shaune
-2

Coba yang ini, itu berhasil untuk saya di Athena:

cast(MyVarcharCol as integer)
ashutosh singh
sumber