2010-03-02 50 views
8

Müşterilerimden biri, uygulamalarımızdan birinde bir dizi hesap numarası ekledi. Bir işlem yapmaya çalışırken, hesap numarasının sonundaki boşluk nedeniyle işlem başarısız olur. Mysql veritabanındaki kayıtlarını, istemcileri silmeden ve hesaplarını yeniden eklemeden, tüm boşlukları sonunda bulunan hesaplardan kaldırmak için nasıl güncellerim? aşağıdaki gibi tablo (lar) yapısı şöyledir:MYSQL güncelleştirme sorgusu boşlukları kaldırmak için

sorgu veya mysql işlevini nasıl yapılandıracağınızla Emin değilim

hesap tablosu:

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

bakın bu: http://stackoverflow.com/questions/281724/does-the-mysql-trim-function-not

aşağıdaki sorgu hesapları tablosundaki kayıtları değişecek -trim-line-break-or-carriage-döndürür – Luftwaffe

cevap

20

Eğer RTRIM() gerekiyorsa belirli bir müşterinin tüm hesapları, size UPDATE deyimi ile JOIN kullanabilirsiniz:

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

Eğer accounts_table çok sayıda kayıt yoksa ve aşağıdaki gibi tüm accountnumber değerleri kesilmiş olduğundan emin olmak için, sadece tüm kayıtlarına kırpma uygulayabilirsiniz:

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

THANKS Bunu denedim ama şu hatayı alıyorum Hata Kodu: 1305 FUNCTION abc1234.TRIM mevcut değil – andreas

+1

@andreas: TRIM 'ile parantez arasında boşluk olmadığından emin olun ('. TRIM (alan) 'değil 'TRIM (alan)'. –

+0

teşekkürler, benim için harika çalıştı –

3

Sen TRIM ve güncelleştirme kullanmak istiyorsunuz .

Sadece bunu kullanmanız gerekir. aşağıdaki gibi

UPDATE accountTable 
SET ACCOUNTNUMBER = RTrim(ACCOUNTNUMBER) 
+0

THANKS denedim ama aşağıdaki hatayı alıyorum Hata Kodu: 1305 FUNCTION abc1234.TRIM yok - – andreas

+0

Düzeltmek için bu bir göz atın: http: // Bugs.mysql.com/bug.php?id=9051 Temel olarak doğru durumları kullandığınızdan emin olmalısınız. – Layke

0

Yabancı anahtar kısıtlamalarınız varsa, değişiklikleri yaparken bunları kaldırmak zorunda kalabilirsiniz.

update accounts set accountnumber = rtrim(accountnumber);