2010-03-02 16 views
8

Uno dei miei clienti ha aggiunto un numero di numeri di conto in una delle nostre applicazioni. Durante il tentativo di effettuare una transazione, la transazione non riesce a causa degli spazi alla fine del numero di conto. Come aggiorno i suoi record nel database Mysql per rimuovere tutti gli spazi dagli account che li hanno alla fine, senza fargli eliminare i client e riaggiungere gli account? la struttura della tabella (s) è la seguente:MYSQL aggiorna la query per rimuovere gli spazi

Non sei sicuro di come strutturare la query o la funzione del mysql

La tabella conto:

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

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

risposta

20

Se è necessario RTRIM() tutti i conti di un cliente particolare, è possibile utilizzare un JOIN con la vostra istruzione UPDATE come segue:

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'; 

Se non si dispone di molti record in accounts_table, e si vuole fare in modo che tutti i valori accountnumber sono tagliati, si può semplicemente applicare il trim per tutti i record come segue:

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

GRAZIE ho provato, ma ottengo il seguente errore Codice errore: 1305 FUNZIONE abc1234.TRIM non esiste – andreas

+1

@andreas: assicurati di non avere uno spazio tra il 'TRIM' e la parentesi '('. dovrebbe essere 'TRIM (campo)' non 'TRIM (campo)'. –

+0

grazie, ha funzionato benissimo per me –

3

usereste TRIM e aggiornamento .

Basta usare questo dovrebbe farlo.

UPDATE accountTable 
SET ACCOUNTNUMBER = RTrim(ACCOUNTNUMBER) 
+0

GRAZIE ho provato, ma ottengo il seguente errore Codice di errore: 1305 FUNCTION abc1234.TRIM non esiste - – andreas

+0

Dai un'occhiata a questo per i modi per risolvere: http: // bugs.mysql.com/bug.php?id=9051 Fondamentalmente è necessario assicurarsi di utilizzare i casi giusti. – Layke

0

Se si dispone di vincoli di chiave esterna, potrebbe essere necessario rimuoverli mentre si effettuano le modifiche.

la seguente query cambierà i record nella tabella conti:

update accounts set accountnumber = rtrim(accountnumber); 
Problemi correlati