Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh mengekstrak nombor daripada rentetan abjad angka dalam SQL?

Bagaimanakah saya boleh mengekstrak nombor daripada rentetan abjad angka dalam SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-21 01:51:08601semak imbas

How Can I Extract Numbers from Alphanumeric Strings in SQL?

Ekstrak nombor daripada rentetan abjad angka dalam SQL

Soalan:

Anda mempunyai beberapa rentetan yang mengandungi aksara abjad angka dan anda perlu mengekstrak nilai angka sahaja. Contohnya, diberikan rentetan berikut:

  • Rancangan Peperiksaan Awal 003
  • Penyelarasan005
  • Baki 1000 helai

Anda ingin mencari:

  • 003
  • 005
  • 1000

Penyelesaian:

Untuk mengekstrak nombor daripada rentetan menggunakan SQL, anda boleh menggunakan fungsi takrif pengguna (UDF). Cipta UDF berikut:

<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
GO</code>

Penggunaan:

Selepas mencipta UDF, anda boleh menggunakannya untuk mengekstrak nombor daripada rentetan:

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

Contohnya:

<code class="language-sql">SELECT dbo.udf_GetNumeric('003Preliminary Examination Plan')</code>

Rujukan:

Nota:

Penyelesaian ini mengeluarkan nombor sebagai rentetan. Jika anda memerlukan integer, anda boleh menggunakan fungsi CAST() untuk menukarnya. Kod di atas telah dipermudahkan untuk mengelakkan logik kompleks yang tidak perlu dan memastikan fungsi itu sentiasa mengembalikan nilai.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak nombor daripada rentetan abjad angka dalam 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