Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengeluarkan Nombor daripada Rentetan Menggunakan Fungsi Ditakrifkan Pengguna SQL?

Bagaimanakah Saya Boleh Mengeluarkan Nombor daripada Rentetan Menggunakan Fungsi Ditakrifkan Pengguna SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-21 01:47:08637semak imbas

How Can I Extract Numbers from Strings Using a SQL User-Defined Function?

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!

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