2015-06-05 89 views
1

我有一個mysql語法的問題。 我有我的子查詢:Mysql語法「if length then」語句

(SELECT uniqueid AS uniqueid_idx, calldate, src, dst, dstchannel, billsec, 
SUBSTR(CONVERT(IF(LENGTH(dst)>8,cdr.dst,CONCAT('67',cdr.dst)),UNSIGNED INTEGER),1,6) prefixo_normal 
FROM cdr) 

可以看到:「如果你有cdr.dst> 8則CONCAT ..」 現在我想驗證:「如果cdr.dst有< 5再創建虛擬列名RAMAL」

我已經試過這句法:IF(LENGTH(cdr.dst) <4, THEN cdr.dst AS ramal END

,但不工作。

我該怎麼辦?

謝謝!

+0

您只能在子查詢中放置圓括號。這是一個子查詢嗎?此外,你應該確定錯誤是什麼,所以我們不必猜測。 –

+0

您不能有條件地創建列。該列始終存在,您只能使用條件來確定要放入的內容。 – Barmar

+0

使用'IF(LENGTH(dst)<4,dst,NULL)AS ramal' – Barmar

回答

1

的語法是:

SELECT uniqueid AS uniqueid_idx, calldate, src, dst, dstchannel, billsec, 
     SUBSTR(CONVERT(IF(LENGTH(dst)>8,cdr.dst,CONCAT('67',cdr.dst)),UNSIGNED INTEGER),1,6) prefixo_normal, 
     IF(LENGTH(dst) < 4, dst, NULL) AS ramal 
FROM cdr 

有沒有THENEND當您使用IF功能。