2014-05-01 2 views
-3

Le champ Nom doit avoir le nom complet dans ce format lastname,First Name Je souhaite les remplacer par firstname(space)lastname Veuillez nous aider.Extraction du prénom et du nom

Je tente d'obtenir la syntaxe SQL pour accomplir cette tâche. par exemple les noms apparaissent dans la colonne de nom comme celui-ci « » Lincoln, Abraham » ou « Lincoln, Abraham. » Je veux créer une autre colonne qui aura le nom comme celui-ci « Abraham Lincoln »

+1

pouvez-vous nous plaît plus de détails sur votre problème afin que nous puissions vous aider en bonne voie .. :) –

+1

Une définition de base de données propre séparerait le prénom et le nommer dans différents champs. – glglgl

Répondre

2

Il serait mieux la conception d'avoir first_name et last_name comme deux champs séparés dans la table
vous pouvez ajouter ces nouvelles colonnes comme ci-dessous:..

ALTER TABLE table_name 
    ADD COLUMN first_name VARCHAR(255) 
    , ADD COLUMN last_name VARCHAR(255) 

Après l'ajout de ces colonnes, vous pouvez copier les valeurs en les en extraire existants full_name_column

update table_name 
    set first_name = trim(substring_index(full_name_column, ',', -1)) 
     , last_name = trim(substring_index(full_name_column, ',', 1)) 

Exemple: Utilisation substring_index:

mysql> select @n:=' Lincoln, Abraham ' name 
    ->  , trim(substring_index(@n, ',', 1)) last_name 
    ->  , trim(substring_index(@n, ',', -1)) first_name; 
+---------------------+-----------+------------+ 
| name    | last_name | first_name | 
+---------------------+-----------+------------+ 
| Lincoln, Abraham | Lincoln | Abraham | 
+---------------------+-----------+------------+ 
0

Même Ravinder vous a fourni une meilleure solution et avec l'explication correcte, mais si elle est encore pour une raison quelconque vous voulez obtenir ce que jamais vous devez alors vous pouvez utiliser ci-dessous requête:

ALTER TABLE MyTable ADD COLUMN `New_Name` VARCHAR(150); 

UPDATE MyTable 
SET `New_Name`= CONCAT(TRIM(SUBSTRING_INDEX(`Name`, ',', -1)),' ',TRIM(SUBSTRING_INDEX(`Name`, ',', 1))); 
+0

Merci .. Mais j'obtiens cette erreur Msg 195, niveau 15, état 10, ligne 3 'SUBSTRING_INDEX' n'est pas un nom de fonction intégré reconnu. et Msg 195, niveau 15, état 10, ligne 3 'TRIM' n'est pas un nom de fonction intégré reconnu. –

+0

Cela fonctionne bien, vous pouvez vérifier ici: http://sqlfiddle.com/#!2/b7ff68/1/0 –

+0

@ user3518233 Je pense que vous utilisez MS SQL Server et non MySQL. Ceci est un message d'erreur MS SQL Server typique. – VMai

Questions connexes