Trouver le deuxième ou le troisième index d'une sous-chaîne dans MySQL
Lorsque vous travaillez avec des chaînes dans une base de données, il est souvent nécessaire de localiser la position d'une sous-chaîne particulière. Dans les cas où une simple requête LIKE est insuffisante, vous aurez peut-être besoin d'un moyen d'identifier précisément l'index d'une occurrence spécifique de cette sous-chaîne.
Problème :
Vous disposez d'un espace- chaîne séparée et doivent extraire une section particulière de la chaîne en fonction de sa position relative. Par exemple, étant donné la chaîne « AAAA BBBB CCCC DDDD EEE », vous souhaitez extraire la sous-chaîne « CCCC ».
Solution :
MySQL fournit une fonction puissante appelée SUBSTRING_INDEX qui permet vous devez trouver la nième occurrence d'une sous-chaîne dans une chaîne plus grande. Pour trouver le deuxième (ou le troisième) espace dans une chaîne, vous pouvez utiliser des appels SUBSTRING_INDEX imbriqués.
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(field, ' ', 3), ' ', -1)
FROM table
Dans la requête ci-dessus, l'appel interne SUBSTRING_INDEX extrait la sous-chaîne jusqu'au troisième espace de la colonne de champ, vous donnant "AAAA BBBB CCCC". L'appel SUBSTRING_INDEX externe isole ensuite la sous-chaîne après ce troisième espace, qui dans ce cas est « CCCC ».
En imbriquant plusieurs appels SUBSTRING_INDEX, vous pouvez continuer à identifier les occurrences ultérieures du délimiteur et extraire les sous-chaînes souhaitées comme nécessaire. Cette fonction polyvalente constitue un moyen pratique et efficace de gérer des tâches complexes de manipulation de chaînes dans MySQL.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3