Konvertuoti eilutę į int naudojant sql užklausą

Kaip konvertuoti eilutę į sveiką skaičių naudojant SQL užklausą SQL serveryje 2005?

Sprendimas

Galite naudoti CAST arba CONVERT:

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
Komentarai (4)

Taip pat reikia žinoti, kad konvertuojant skaičių eilutę, t. y. '56.72' į INT, galite susidurti su SQL klaida.

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

Norėdami tai apeiti, tiesiog atlikite du konvertavimus taip:

STRING -> NUMERIC -> INT

arba

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

Kopijuojant duomenis iš lentelėsA į lentelęB, perskaičiavimas yra numanomas, todėl jums nereikia antrojo konvertavimo (jei jums tinka apvalinimas iki artimiausio INT):

INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Komentarai (0)

Nuo "SQL Server 2012" galite naudoti TRY_PARSE arba TRY_CONVERT.

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)
Komentarai (1)