Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengekstrak nombor daripada rentetan menggunakan SQL?

Bagaimana untuk mengekstrak nombor daripada rentetan menggunakan SQL?

DDD
DDDasal
2025-01-21 01:42:09721semak imbas

How to Extract Numbers from Strings Using SQL?

Pengeluaran nombor daripada rentetan SQL

Soalan:

Tulis pertanyaan SQL untuk mengekstrak hanya nilai angka daripada rentetan yang diberikan. Contohnya, memandangkan rentetan input "Rancangan Peperiksaan Awal 003", "Penyelarasan005" dan "Lembaran Baki1000", output yang dikehendaki ialah "003", "005" dan "1000" masing-masing.

Penyelesaian:

Untuk melaksanakan tugas ini, kami boleh memanfaatkan fungsi takrif pengguna (UDF) untuk menghuraikan rentetan dan mendapatkan semula nilai berangka. Begini cara melakukannya:

<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), '')
END
GO</code>

Kini kami boleh menggunakan UDF ini dalam pertanyaan kami:

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) 
FROM table_name</code>

Kaedah lanjutan ini mengekstrak nilai berangka dengan cekap daripada rentetan dalam SQL. Ambil perhatian bahawa UDF yang diubah suai ini mengendalikan nilai nol dan kes yang mengandungi hanya aksara bukan angka, mengembalikan rentetan kosong dan bukannya 0.

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak nombor daripada rentetan menggunakan 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