Extraire les nombres d'une chaîne dans MySQL
Lorsqu'il s'agit de chaînes alphanumériques, les nombres doivent être séparés pour divers besoins de traitement des données. MySQL propose plusieurs façons d'atteindre cet objectif.
Pour les chaînes commençant par un caractère numérique suivi d'un caractère non numérique, vous pouvez utiliser CAST() ou une conversion implicite :
<code class="language-sql">SELECT CAST('1234abc' AS UNSIGNED); -- 1234 SELECT '1234abc'+0; -- 1234</code>
Pour extraire des nombres d'une chaîne arbitrairement structurée, vous pouvez définir une fonction personnalisée comme 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>
Après avoir défini la fonction personnalisée ExtractNumber, vous pouvez l'utiliser dans les requêtes :
<code class="language-sql">SELECT ExtractNumber("abc1234def") AS number; -- 1234</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!