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

Bagaimanakah saya boleh mengekstrak nilai angka daripada rentetan dalam SQL?

Patricia Arquette
Lepaskan: 2025-01-21 01:36:08
asal
500 orang telah melayarinya

How Can I Extract Numeric Values from Strings in SQL?

Ekstrak data berangka daripada rentetan

Dalam persekitaran pangkalan data, anda mungkin perlu mengekstrak data berangka tertanam daripada rentetan. Pertimbangkan contoh berikut:

<code>字符串 1: 003Preliminary Examination Plan   
字符串 2: Coordination005  
字符串 3: Balance1000sheet</code>
Salin selepas log masuk

Hasil yang diingini adalah untuk mengekstrak nombor sahaja daripada setiap rentetan:

<code>字符串 1: 003
字符串 2: 005
字符串 3: 1000</code>
Salin selepas log masuk

Untuk melaksanakan ini dalam SQL, anda boleh mencipta fungsi tetapan pengguna tersuai (UDF):

<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>
Salin selepas log masuk

UDF ini pada asasnya mengenal pasti dan mengalih keluar semua aksara bukan angka daripada rentetan input. Kemudian, ia menyemak sama ada rentetan yang terhasil boleh ditukar kepada integer dan mengembalikannya dengan sewajarnya.

Untuk menggunakan fungsi ini, hanya gunakannya pada lajur yang berkaitan:

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) 
from table_name</code>
Salin selepas log masuk

Ini hanya akan mengembalikan bahagian angka rentetan dalam lajur yang ditentukan. Untuk data contoh yang diberikan, hasilnya akan sepadan dengan nilai yang dijangkakan:

<code>003
005
1000</code>
Salin selepas log masuk

Nota: Terdapat ralat tatabahasa dalam pernyataan RETURN dalam kod asal, yang telah diperbetulkan kepada RETURN ISNULL(TRIM(@strAlphaNumeric), '0') yang lebih ringkas dan berkesan untuk mengelakkan masalah penukaran sarang dan jenis penukaran yang tidak perlu. Fungsi yang disemak ini lebih jelas dan lebih mudah difahami dan diselenggara.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak nilai angka daripada rentetan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan