2010-06-25 14 views
0

J'ai le problème suivant.Comment modifier la structure d'un champ de nom dans mysql

Ma table, disons tab1, a colonne comme suit "LastName, FirstName". Je veux faire en sorte que la colonne devienne "FirstName LastName".

Des idées sur la façon dont cela doit être fait? Notez qu'il n'y a pas de virgule présente, mais je suppose que cela peut être facilement supprimé une fois que j'ai compris comment retourner le prénom et le nom de famille.

Toute aide serait appréciée.

Merci.

+2

Voulez-vous restructurer votre table, ou voulez-vous changer la façon dont elle est sortie? Es-tu sûr de vouloir faire ça? –

+0

je le ferais avec php – antpaw

+0

Vous devez absolument changer une structure de table, pas de champ. Il doit y avoir 2 champs distincts –

Répondre

1

remplacer @NAME avec votre valeur réelle:

SELECT TRIM(SUBSTR(@NAME, LOCATE(",", @NAME) + 1)) AS prename, TRIM(SUBSTR(@NAME, 1, LOCATE(",", @NAME) - 1)) AS surename 

Cela va extraire la partie PRFNOM et Surename, vous pouvez maintenant insérer/modifier les données que vous souhaitez.

+0

Merci, ça a marché. –

2
  • Il serait préférable de diviser la colonne de nom en deux champs, et FirstName LastName, de sorte que vous pouvez les formater de quelque façon que vous voulez, et encore un tri sur le nom.
  • Utilisez substring et substring_index pour trouver les virgules et partager sur eux. Voir le manual.
0

Pas une réponse à votre question, mais je ne ferais pas cela en aucune circonstance. Vous perdrez toute chance de distinguer de manière fiable le nom et le prénom. Considérez les noms suivants:

Bridget St John 
Boutros Boutros Ghali 
Karl-Theodor Maria Nikolaus Freiherr von und zu Guttenberg 

Je recommande de conserver des colonnes séparées "nom de famille" et "prénom". Vous pouvez les concaténer à votre guise lorsque vous faites votre sortie.

0
UPDATE table SET name2=CONCAT (TRIM(SUBSTR(name, LOCATE(",", name) + 1)), ' ', TRIM(SUBSTR(name, 1, LOCATE(",", name) - 1)))