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:
Anda ingin mencari:
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!