2010-03-02 5 views
8

Un de mes clients a ajouté un certain nombre de numéros de compte dans l'une de nos applications. En essayant de faire une transaction, la transaction échoue en raison des espaces à la fin du numéro de compte. Comment mettre à jour ses enregistrements dans la base de données Mysql pour supprimer tous les espaces des comptes qui les ont à la fin, sans lui faire supprimer les clients et rajouter les comptes? la structure de la table (s) est la suivante:Requête de mise à jour MYSQL pour supprimer des espaces

Je ne sais pas comment structurer la requête ou la fonction du mysql

Le tableau de compte:

the account table: 
CUSTOMER_ID    
ACCOUNTNUMBER   
TXT     
CURRENCY_NO    
USER_ID     
ACTIVE_FLAG    
USER_DATE     
ben_bic_address   
int_bic_address 

the admin table 

    ADM_USER_ID   
    LOCATION_CD   
    LANG     
    USER_NAME    
    USER_LOGIN    
    USER_PASSWORD   
GROUP_CODE    
USER_ID    
    USER_DATE    
    ACTIVE     
COUNTER     
connected    
IP 

And the customer table: 

CUSTOMER_ID    
COUNTRY_NO    
USER_ID     
CUSTOMER_NAME 
ACTIVE_FLAG 
+0

Envoyer cette: http://stackoverflow.com/questions/281724/does-the-mysql-trim-function-not -trim-line-breaks-or-carriage-returns – Luftwaffe

Répondre

20

Si vous devez RTRIM() tous les comptes d'un client particulier, vous pouvez utiliser un JOIN avec votre instruction UPDATE comme suit:

UPDATE 
    accounts_table 
INNER JOIN 
    customers_table ON (accounts_table.user_id = customers_table.user_id) 
SET 
    accountnumber = RTRIM(accountnumber) 
WHERE 
    customers_table.customer_id = 'customer id'; 

Si vous n'avez pas beaucoup de dossiers dans accounts_table et vous voulez vous assurer que toutes les valeurs accountnumber sont parés, vous pouvez simplement appliquer la garniture à tous les enregistrements comme suit:

UPDATE 
    accounts_table 
SET 
    accountnumber = TRIM(accountnumber); 
+0

MERCI j'ai essayé cela mais j'obtiens l'erreur suivante Code d'erreur: 1305 FONCTION abc1234.TRIM n'existe pas – andreas

+1

@andreas: Assurez-vous que vous n'avez pas un espace entre le 'TRIM' et la parenthèse' ('. devrait être 'TRIM (champ)' pas 'TRIM (champ)'. –

+0

merci, cela a bien fonctionné pour moi –

3

QU'AVEC TRIM et mise à jour .

Juste en utilisant cela devrait le faire.

UPDATE accountTable 
SET ACCOUNTNUMBER = RTrim(ACCOUNTNUMBER) 
+0

MERCI j'ai essayé mais j'ai l'erreur suivante Code d'erreur: 1305 FONCTION abc1234.TRIM n'existe pas - – andreas

+0

Jetez un coup d'oeil à ceci pour des manières de fixer: http: // bugs.mysql.com/bug.php?id=9051 Vous devez essentiellement vous assurer que vous utilisez les cas corrects. – Layke

0

Si vous avez des contraintes de clé étrangère, vous devrez peut-être les supprimer pendant que vous apportez les modifications.

La requête suivante va changer les enregistrements de la table des comptes:

update accounts set accountnumber = rtrim(accountnumber);