Μετατροπή μιας συμβολοσειράς σε int χρησιμοποιώντας ερώτημα sql

Πώς να μετατρέψετε μια συμβολοσειρά σε ακέραιο αριθμό χρησιμοποιώντας ερώτημα SQL στον SQL Server 2005;

Λύση

Μπορείτε να χρησιμοποιήσετε CAST ή CONVERT:

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
Σχόλια (4)

Επίσης να γνωρίζετε ότι κατά τη μετατροπή από αριθμητική συμβολοσειρά π.χ. '56.72' σε INT μπορεί να αντιμετωπίσετε ένα σφάλμα SQL.

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

Για να το παρακάμψετε αυτό απλά κάντε δύο μετατροπές ως εξής:

STRING -> NUMERIC -> INT

ή

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

Όταν αντιγράφετε δεδομένα από τον ΠίνακαA στον ΠίνακαB, η μετατροπή είναι έμμεση, οπότε δεν χρειάζεστε τη δεύτερη μετατροπή (αν είστε ευχαριστημένοι με τη στρογγυλοποίηση προς τα κάτω στο πλησιέστερο INT):

INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Σχόλια (0)

Ξεκινώντας από τον SQL Server 2012, μπορείτε να χρησιμοποιήσετε TRY_PARSE ή TRY_CONVERT.

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)
Σχόλια (1)