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 :
- Fonction de chaîne de fractionnement MySQL par Federico Cargnelutti
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;