2010-01-29 7 views
0

J'ai une table de base de données MySQL C avec un champ appelé Phone. J'ai déjà créé un nouveau champ dans la table C appelé PhoneFixed et je souhaite mettre à jour ce champ avec une version modifiée du champ Phone.Comment copier un champ de modification d'une table dans un nouveau champ dans la même table?

Le champ PhoneFixed utilisera la déclaration suivante pour obtenir sa valeur:

Concat('(',Left(C.Phone,3),') ',Right(C.Phone,8)) As `PhoneFixed` 

Quelle déclaration dois-je mettre à jour automatiquement la valeur de PhoneFixed être égal au résultat de l'énoncé ci-dessus pour toutes les lignes ma table?

+0

Quand vous dites « créer un nouveau champ » vous dites que vous voulez mettre à jour une colonne * valeur * existante dans la table ou modifier la table pour créer une nouvelle colonne? – Jacob

+0

J'aurais dû clarifier. J'ai déjà ajouté ce champ à ma table db. J'ai juste besoin de mettre à jour les données qui se trouvent dans ce champ. Je ne suis pas sûr comment former l'instruction SQL pour le faire. –

Répondre

1

Si vous voulez juste de mettre à jour une colonne PhoneFixed préexistante pour toutes les lignes, vous souhaitez exécuter une requête comme ceci:

UPDATE C 
SET PhoneFixed = CONCAT('(', LEFT(Phone, 3), ') ', RIGHT(Phone, 8)) 
+0

Parfait, merci! J'oublie toujours la syntaxe pour mettre à jour les tables. Je suis tellement habitué à courir 'Select' tout le temps, j'ai rarement besoin de me souvenir de tout le reste. –

+0

Correct, mais la concat est en fait faux pour les numéros de téléphone des États-Unis ... vous voudrez probablement CONCAT ('(', gauche (téléphone, 3), ')', droite (téléphone, 7)) – glomad

+0

bien, le 'téléphone 'field est actuellement stocké comme' XXX-XXX-XXXX', de sorte que 'Right (Phone, 8)' prend en compte le trait d'union. J'ai juste besoin de le formater correctement afin que je puisse le joindre à une table principale dans la base de données de notre système. –

1

Si je vous ai bien compris, une mise à jour simple fonctionnera:

UPDATE C SET PhoneFixed = CONCAT('(', LEFT(Phone, 3), ') ', RIGHT(Phone, 8)) 

qui mettra à jour le PhoneFixed en utilisant la valeur de téléphone de la même rangée.

Questions connexes