Mysql
 sql >> Base de données >  >> RDS >> Mysql

Fractionner la valeur d'un champ à deux

Malheureusement, MySQL ne dispose pas d'une fonction de chaîne fractionnée. Cependant, vous pouvez créer une fonction définie par l'utilisateur pour cela, comme celle décrite dans l'article suivant :

Avec cette fonction :

DELIMITER $$

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN 
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');
END$$

DELIMITER ;

vous pourrez construire votre requête comme suit :

SELECT SPLIT_STR(membername, ' ', 1) as memberfirst,
       SPLIT_STR(membername, ' ', 2) as memberlast
FROM   users;

Si vous préférez ne pas utiliser une fonction définie par l'utilisateur et que cela ne vous dérange pas que la requête soit un peu plus détaillée, vous pouvez également procéder comme suit :

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 1), ' ', -1) as memberfirst,
       SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 2), ' ', -1) as memberlast
FROM   users;