2013-02-22 29 views
5

Tôi đã viết một tệp được lưu trữ trong sqlyog. Nó khá dài và thực hiện tất cả chức năng mong muốn ngoại trừ câu lệnh concat vì vậy tôi sẽ chỉ liệt kê truy vấn cụ thể đó.Nhận thêm dấu phẩy ',' trong khi sử dụng concat

UPDATE recipes_new 
SET co_auths = CONCAT(co_auths,',',c1id) 
WHERE id = name_in; 

Tôi về cơ bản muốn tách trong hai trường và câu lệnh này được đặt trong con trỏ sao cho nó lặp lại. co_auths is null tại thời điểm này vì vậy tôi nhận được kết quả là , 1,2,3 nơi tôi muốn nó là 1,2,3. Bất kỳ dự đoán nào có thể là giải pháp thích hợp nhất?

Trả lời

6

Bằng cách sử dụng một IF:

UPDATE recipes_new 
SET co_auths = IF(co_auths IS NULL, c1id, CONCAT(co_auths, ',', c1id)) 
WHERE id = name_in; 

Nếu giá trị của co_auths là một chuỗi rỗng thay vì NULL:

UPDATE recipes_new 
SET co_auths = IF(LENGTH(co_auths), CONCAT(co_auths, ',', c1id), c1id) 
WHERE id = name_in; 
+0

NẾU này có nên được đặt trong truy vấn cập nhật không? – Shahzaib

+0

CẬP NHẬT recipes_new SET co_auths = (IF (co_auths IS NULL, c1id, CONCAT (co_auths, ',', c1id)) WHERE id = name_in); Tôi có đúng vì im nhận được lỗi – Shahzaib

+0

Tôi vẫn nhận được, 1,2,3 – Shahzaib

2

này nên hoạt động sử dụng CASE để kiểm tra xem nó là NULL:

CONCAT(
    CASE 
     WHEN IFNULL(co_auths,'') = '' 
     THEN '' 
     ELSE CONCAT(co_auths, ',') 
    END, c1id) 
+0

Vấn đề vẫn có – Shahzaib

+0

@Shahzaib - Cập nhật câu trả lời để kiểm tra null trống và - tốt nhất của may mắn! – sgeddes

Các vấn đề liên quan