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

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

DDD
DDDasal
2025-01-03 01:05:39744semak imbas

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

Menghantar Rentetan kepada Integer dengan Nilai Lalai dalam T-SQL

Dalam T-SQL, keperluan sering timbul untuk menghantar rentetan (nvarchar ) nilai kepada jenis data integer (int). Walau bagaimanapun, penukaran ini boleh gagal jika rentetan mengandungi aksara bukan angka. Untuk mengendalikan senario sedemikian dengan anggun, adalah perlu untuk mengembalikan nilai lalai atau NULL jika penukaran tidak berjaya.

Untuk mencapai ini, ungkapan CASE, bersama-sama dengan fungsi ISNUMERIC() boleh digunakan. ISNUMERIC() menilai sama ada rentetan mewakili nilai angka yang sah, mengembalikan 1 jika benar dan 0 jika palsu.

Sintaks:

CASE WHEN ISNUMERIC(@variable) = 1 THEN CAST(@variable AS INT) ELSE NULL END

Contoh:

Pertimbangkan perkara berikut contoh:

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 kes pertama, memandangkan '100' ialah integer yang sah, penukaran berjaya, mengembalikan nilai 100. Dalam kes kedua, 'XXX' bukan nilai angka, jadi Fungsi ISNUMERIC() mengembalikan 0, menyebabkan ungkapan CASE kembali NULL.

Pertimbangan:

Perlu diambil perhatian bahawa ISNUMERIC() mempunyai pengehadan tertentu. Sebagai contoh, ia mungkin kembali benar untuk rentetan yang mengandungi simbol mata wang ($), pemisah (,) atau (.), dan pengendali aritmetik ( , -). Oleh itu, pengesahan tambahan mungkin diperlukan untuk memastikan integriti penukaran.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Rentetan dengan Selamat kepada Integer dengan Nilai Lalai dalam T-SQL?. 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