Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengeluarkan Nombor daripada Rentetan Menggunakan Fungsi Ditakrifkan Pengguna SQL?
Mengekstrak Data Berangka daripada Rentetan dalam SQL Menggunakan Fungsi Ditentukan Pengguna
Panduan ini menunjukkan cara mencipta fungsi takrif pengguna SQL (UDF) untuk mengekstrak aksara berangka sahaja daripada rentetan dengan cekap. Ini adalah tugas biasa dalam pembersihan dan manipulasi data.
Membuat UDF:
Kod SQL berikut mentakrifkan UDF bernama dbo.udf_GetNumeric
yang mengambil rentetan sebagai input dan mengembalikan bahagian angka yang diekstrak:
<code class="language-sql">CREATE FUNCTION dbo.udf_GetNumeric ( @strAlphaNumeric VARCHAR(256) ) RETURNS VARCHAR(256) AS BEGIN DECLARE @intAlpha INT SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) BEGIN WHILE @intAlpha > 0 BEGIN SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' ) SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric ) END END RETURN ISNULL(TRIM(@strAlphaNumeric), '0') END</code>
Memohon UDF:
Setelah UDF dibuat, gunakan pernyataan SELECT berikut untuk menerapkannya pada lajur dalam jadual anda:
<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) AS ExtractedNumber FROM table_name;</code>
Ganti column_name
dengan nama sebenar lajur yang mengandungi rentetan dan table_name
dengan nama jadual anda. Hasilnya ialah lajur baharu, ExtractedNumber
, yang mengandungi hanya nilai angka.
Contoh Ilustrasi:
Pertimbangkan data sampel ini:
String 1 | String 2 | String 3 |
---|---|---|
003Preliminary Examination Plan | Coordination005 | Balance1000sheet |
Selepas menggunakan UDF, outputnya ialah:
String 1 | String 2 | String 3 |
---|---|---|
003 | 005 | 1000 |
Penjelasan Fungsi:
Fungsi dbo.udf_GetNumeric
menggunakan PATINDEX
untuk mencari aksara bukan angka pertama. Fungsi STUFF
kemudian mengalih keluar aksara itu. Proses ini berulang sehingga semua aksara bukan angka dihapuskan, hanya meninggalkan nombor. Fungsi ISNULL
dan TRIM
mengendalikan potensi nilai nol dan ruang hadapan/belakang.
Penambahbaikan Selanjutnya (Kemas Kini Masa Depan): Penjelasan yang lebih terperinci dan potensi penambahbaikan pada fungsi ini akan ditambah dalam kemas kini akan datang.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nombor daripada Rentetan Menggunakan Fungsi Ditakrifkan Pengguna SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!