2010-03-02 42 views
8

Một trong các khách hàng của tôi đã thêm một số số tài khoản vào một trong các ứng dụng của chúng tôi. Trong khi cố gắng thực hiện giao dịch, giao dịch không thành công do các khoảng trống ở cuối số tài khoản. Làm cách nào để cập nhật hồ sơ của anh ấy trong cơ sở dữ liệu Mysql để xóa tất cả không gian khỏi các tài khoản có chúng ở cuối, mà không làm cho anh ta xóa khách hàng và thêm lại tài khoản? cấu trúc của bảng (s) là như sau:Truy vấn cập nhật MYSQL để xóa không gian

Không chắc cách cấu trúc truy vấn hoặc chức năng của mysql

Bảng tài khoản:

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

Tham khảo này: http://stackoverflow.com/questions/281724/does-the-mysql-trim-function-not -trim-line-break-or-carriage-return – Luftwaffe

Trả lời

20

Nếu bạn cần RTRIM() tất cả các tài khoản của một khách hàng cụ thể, bạn có thể sử dụng một JOIN với câu lệnh UPDATE của bạn như sau:

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

Nếu bạn không có nhiều bản ghi trong accounts_table, và bạn muốn đảm bảo rằng tất cả các giá trị accountnumber được cắt xén, bạn có thể chỉ cần áp dụng cắt cho tất cả các bản ghi như sau:

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

THANKS Tôi đã thử điều đó nhưng tôi nhận được lỗi sau Mã lỗi: 1305 CHỨC NĂNG abc1234.TRIM không tồn tại – andreas

+1

@andreas: Đảm bảo bạn không có khoảng trắng giữa 'TRIM' và dấu ngoặc đơn' ('. nên là 'TRIM (trường) 'không phải' TRIM (trường)'. –

+0

cảm ơn, nó làm việc rất tốt cho tôi –

3

Bạn sẽ sử dụng TRIM và cập nhật .

Chỉ cần sử dụng tính năng này nên thực hiện.

UPDATE accountTable 
SET ACCOUNTNUMBER = RTrim(ACCOUNTNUMBER) 
+0

THANKS tôi đã thử điều đó nhưng tôi nhận được lỗi sau Mã lỗi: 1305 CHỨC NĂNG abc1234.TRIM không tồn tại - – andreas

+0

Hãy xem xét cách này để khắc phục: http: // Bạn cần phải chắc chắn rằng bạn đang sử dụng đúng các trường hợp. – Layke

0

Nếu bạn có các ràng buộc khóa ngoại, thì bạn có thể phải loại bỏ chúng trong khi bạn thực hiện các sửa đổi.

Các truy vấn sau đây sẽ thay đổi bản ghi trong bảng tài khoản:

update accounts set accountnumber = rtrim(accountnumber); 
Các vấn đề liên quan