Obtenez tous les caractères avant l’espace dans MySQL

Je voudrais obtenir tous les personnages dans un champ avant un espace

Par exemple, si field1 est "chara ters"

Je veux qu’il retourne "chara"

À quoi ressemblerait cette déclaration de sélection?

SELECT LEFT(field1,LOCATE(' ',field1) - 1)

Notez que si la chaîne en question ne contient aucun espace, cela renverra une chaîne vide.

Voici une autre méthode qui fonctionne et qui peut sembler un peu plus simple pour certains. Il utilise la fonction MySQL SUBSTRING_INDEX . Un 1 renvoie tout avant le premier espace et un -1 renvoie tout ce qui suit le dernier espace.

Cela renvoie “chara”:

 SELECT SUBSTRING_INDEX( field1, ' ', 1 ) 

Cela renvoie ‘ters’:

 SELECT SUBSTRING_INDEX( field1, ' ', -1 ) 

Détails

Une valeur positive cherchera votre caractère spécifié à partir du début de la chaîne et une valeur négative commencera à la fin de la chaîne. La valeur du nombre indique la quantité de votre caractère spécifié à rechercher avant de retourner le morceau restant de la chaîne. Si le caractère que vous recherchez n’existe pas, la valeur du champ entier sera renvoyée.

Dans ce cas, un -2 renverrait tout ce qui est à droite du deuxième au dernier espace, ce qui n’existe pas dans cet exemple, de sorte que la valeur du champ entier sera renvoyée.

Vous auriez besoin d’ opérations de chaîne pour cela. En supposant que chaque champ a au moins un caractère d’espace:

 SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table; 

Approche sécuritaire:

 SELECT IF( LOCATE(' ', field1), SUBSTR(field1, 0, LOCATE(' ', field1)), field1 ) FROM your_table;