วิธีการแปลงสตริงเป็นจำนวนเต็มโดยใช้แบบสอบถาม SQL บน SQL Server 2005
วิธีการแปลงสตริงเป็นจำนวนเต็มโดยใช้แบบสอบถาม SQL บน SQL Server 2005
คำตอบ:
คุณสามารถใช้CAST หรือ 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()
ก็สามารถให้ผลลัพธ์ที่ผิดปกติได้ มันจะส่งคืน TRUE สำหรับสตริง "-." ซึ่งจะยังคงทำให้เกิดข้อผิดพลาดเมื่อคุณพยายามที่จะโยนมันเป็นตัวเลข
โปรดระวังด้วยว่าเมื่อทำการแปลงจากสตริงตัวเลขเช่น'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)
เมื่อคัดลอกข้อมูลจาก TableA ไปยัง TableB การแปลงจะมีความหมายดังนั้นคุณไม่จำเป็นต้องมีการแปลงที่สอง (หากคุณมีความสุขในการปัดเศษเป็น INT ที่ใกล้ที่สุด):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
เริ่มต้นด้วย SQL Server 2012 คุณสามารถใช้TRY_PARSEหรือTRY_CONVERT
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
ลองอันนี้ใช้ได้กับฉันใน Athena:
cast(MyVarcharCol as integer)