SQL Server 2005'te SQL sorgusunu kullanarak bir dizeyi tamsayıya nasıl dönüştürebilirim?
SQL Server 2005'te SQL sorgusunu kullanarak bir dizeyi tamsayıya nasıl dönüştürebilirim?
Yanıtlar:
CAST veya CONVERT kullanabilirsiniz :
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()
sapkın sonuçlar üretebilir. "-." Dizgisi için TRUE döndürür ve bu sayıya çevirmeye çalıştığınızda hataya neden olur.
Ayrıca sayısal dizeden INT'ye dönüştürürken '56.72'
bir SQL hatasına karşı gelebileceğinizi de unutmayın.
Conversion failed when converting the varchar value '56.72' to data type int.
Bu sorunu çözmek için aşağıdaki gibi iki dönüştürme yapın:
STRING -> SAYISAL -> INT
veya
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
TableA'dan TableB'ye veri kopyalarken, dönüştürme örtüktür, bu nedenle ikinci dönüştürmeye ihtiyacınız yoktur (en yakın INT'ye yuvarlama işleminden memnunsanız):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
SQL Server 2012'den başlayarak TRY_PARSE veya TRY_CONVERT kullanabilirsiniz .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Bunu deneyin, Athena'da benim için çalıştı:
cast(MyVarcharCol as integer)