Ekstrak nombor daripada rentetan dalam MySQL
Apabila berurusan dengan rentetan alfanumerik, nombor perlu diasingkan untuk pelbagai keperluan pemprosesan data. MySQL menyediakan beberapa cara untuk mencapai matlamat ini.
Untuk rentetan yang bermula dengan aksara angka diikuti dengan aksara bukan angka, anda boleh menggunakan CAST() atau penukaran tersirat:
<code class="language-sql">SELECT CAST('1234abc' AS UNSIGNED); -- 1234 SELECT '1234abc'+0; -- 1234</code>
Untuk mengekstrak nombor daripada rentetan berstruktur sewenang-wenangnya, anda boleh menentukan fungsi tersuai seperti ExtractNumber:
<code class="language-sql">DELIMITER $$ CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50)) RETURNS INT NO SQL BEGIN DECLARE ctrNumber VARCHAR(50); DECLARE finNumber VARCHAR(50) DEFAULT ''; DECLARE sChar VARCHAR(1); DECLARE inti INTEGER DEFAULT 1; IF LENGTH(in_string) > 0 THEN WHILE(inti <= LENGTH(in_string)) DO SET sChar = SUBSTRING(in_string, inti, 1); IF sChar BETWEEN '0' AND '9' THEN SET finNumber = CONCAT(finNumber, sChar); END IF; SET inti = inti + 1; END WHILE; RETURN CAST(finNumber AS UNSIGNED); ELSE RETURN 0; END IF; END$$ DELIMITER ;</code>
Selepas mentakrifkan fungsi tersuai ExtractNumber, anda boleh menggunakannya dalam pertanyaan:
<code class="language-sql">SELECT ExtractNumber("abc1234def") AS number; -- 1234</code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak digit daripada rentetan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!