2012-11-02 98 views
4

我需要帶有一些前綴和後綴的mySql結果。這是我的代碼:將字符串添加到mysql結果

SELECT bk_id, bk_rtype, villas_db.v_name AS villa_name 
FROM booking_db 
INNER JOIN villas_db ON booking_db.bk_vid = villas_db.v_id 
WHERE '2012-11-02' 
BETWEEN bk_date1 
AND bk_date2 
ORDER BY bk_id DESC 
LIMIT 0 , 30 

結果是:

bk_id bk_rtype villa_name 
30   2   T2 
29   3   V1 

所以我需要的結果爲:

bk_id bk_rtype villa_name  booking_no 
30   2   T2   B2-00030 
29   3   V1   B3-00029 

而B是分開的預訂前綴以 「 - 」 和sprintf ( 「%05D」,bk_id);

請建議。

回答

0

,我發現我的解決方案:

SELECT bk_id, bk_rtype, villas_db.v_name AS villa_name, concat('B', bk_rtype, '-', lpad(bk_id, 5, 0)) AS booking_no 
FROM booking_db 
INNER JOIN villas_db ON booking_db.bk_vid = villas_db.v_id 
WHERE '2012-11-02' 
BETWEEN bk_date1 
AND bk_date2 
ORDER BY bk_id DESC 
LIMIT 0 , 30 
+1

這與我的回答有何不同? –

6

您可能需要使用CONCATLPAD功能如下:

SELECT bk_id, bk_rtype, villas_db.v_name AS villa_name, 
     CONCAT('B',bk_rtype,'-', LPAD(bk_id, 5, '0')) AS booking_no 
FROM booking_db 
INNER JOIN villas_db ON booking_db.bk_vid = villas_db.v_id 
WHERE '2012-11-02' 
    BETWEEN bk_date1 
    AND bk_date2 
ORDER BY bk_id DESC 
LIMIT 0 , 30 ; 
+0

你的答案是好的,但有點接近最佳。反正我找到了我的解決方案。 – Wilf

+1

@Wilf:你的解決方案與我的回答有何不同? –

+0

你的末尾有一個分號,顯然:)(和你+1) – RocketDonkey