2012-02-02 36 views
26

Các công trình sau đây - trả về Y khi chargeback bằng 1 khác nó mặc định là Nmysql CHỌN NẾU tuyên bố với OR

IF(fd.charge_back = 1, 'Y', 'N') AS charge_back 

tuy nhiên tôi có thể không có vẻ để có được một này làm việc? Là cú pháp hợp lệ

IF(compliment = ('set' OR 'Y' OR 1), 'Y', 'N') AS customer_compliment 
+6

Điều gì sẽ xảy ra nếu bạn thay đổi điều kiện thành 'lời khen' ('set', 'Y', '1') ' – Lamak

+1

Bạn có thể xem xét việc không thực hiện điều này trong truy vấn của mình. Đây là định dạng, không truy vấn nữa. Bạn nhận được một sự thật rõ ràng/sai 1/0 trong trở lại mà nên làm các trick. Ví dụ: bạn có thể làm: nếu (khen) vv không thể thực hiện bằng chuỗi như Y/N. Ngoài ra Y/N là ngôn ngữ bất khả tri trong khi boolean thì không. Vì vậy, khi dịch sang tiếng Hà Lan chẳng hạn, bạn sẽ phải chuyển đổi Y/N một lần nữa thành J/N. Tóm lại: Có thể bạn không làm điều này trừ khi bạn có lý do chính đáng để làm như vậy hoặc chỉ cần thực hiện giải pháp cắt. –

+0

Cảm ơn thông tin phản hồi của bạn tôi đồng ý boolean sẽ là một giá trị tốt hơn để sử dụng. Tuy nhiên, im làm việc với dữ liệu hiện có và không thể thay đổi tất cả các giá trị mà không làm ảnh hưởng đến các phần khác. –

Trả lời

54

Có lẽ điều này sẽ làm việc:

IF(compliment = 'set' OR compliment = 'Y' OR compliment = 1, 'Y', 'N') AS customer_compliment 
+0

Có lẽ một câu hỏi ngớ ngẩn, nhưng một mệnh đề 'IN' có hoạt động ở đây không? Ví dụ. 'IF (lời khen IN ('set', 'Y', 1), 'Y', 'N') AS customer_compliment'? –

3
IF(compliment IN('set','Y',1), 'Y', 'N') AS customer_compliment 

sẽ thực hiện công việc như Buttle Butkus gợi ý.