Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menghantar Rentetan dengan Selamat kepada Integer dalam T-SQL dengan Nilai Lalai atau NULL?

Bagaimana untuk Menghantar Rentetan dengan Selamat kepada Integer dalam T-SQL dengan Nilai Lalai atau NULL?

Patricia Arquette
Patricia Arquetteasal
2024-12-30 01:51:10170semak imbas

How to Safely Cast Strings to Integers in T-SQL with Default Values or NULL?

TSQL: Menghantar Rentetan kepada Integer dengan Nilai Lalai atau NULL

Menghantar rentetan kepada integer ialah tugas biasa dalam T-SQL. Walau bagaimanapun, apabila penukaran tidak dapat dilakukan, ralat mungkin berlaku. Untuk mengendalikan situasi sedemikian, T-SQL menyediakan pendekatan berguna yang membolehkan anda mengembalikan nilai lalai atau NULL jika penukaran gagal.

Penyelesaian

Penyelesaian melibatkan penggunaan fungsi ISNUMERIC() untuk menyemak sama ada rentetan boleh ditukar kepada integer. Jika penukaran boleh dilakukan, fungsi CAST() digunakan untuk menukar rentetan kepada integer. Jika tidak, nilai lalai atau NULL dikembalikan.

Coretan kod berikut menunjukkan pendekatan ini:

DECLARE @text AS NVARCHAR(10)

SET @text = '100'
SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
-- returns 100

SET @text = 'XXX'
SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
-- returns NULL

Dalam contoh ini, pernyataan SELECT pertama mengembalikan 100 kerana '100' boleh ditukar kepada integer. Pernyataan SELECT kedua mengembalikan NULL kerana 'XXX' tidak boleh ditukar kepada integer.

Pertimbangan

Adalah penting untuk ambil perhatian bahawa fungsi ISNUMERIC() mempunyai beberapa batasan. Seperti yang dinyatakan oleh Fedor Hajdu, ia mungkin kembali benar untuk rentetan yang mengandungi aksara tertentu, seperti $ (mata wang), , (pemisah) dan -. Oleh itu, adalah disyorkan untuk menggunakan ISNUMERIC() dengan berhati-hati apabila mengesahkan input untuk penukaran integer.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Rentetan dengan Selamat kepada Integer dalam T-SQL dengan Nilai Lalai atau NULL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn