将字符串添加到mysql结果中

Wil*_*ilf 4 mysql string add

我需要带有一些前缀和后缀的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
Run Code Online (Sandbox Code Playgroud)

结果是:

bk_id   bk_rtype    villa_name
30          2           T2
29          3           V1
Run Code Online (Sandbox Code Playgroud)

所以我需要结果如下:

bk_id   bk_rtype    villa_name     booking_no
30          2           T2         B2-00030
29          3           V1         B3-00029
Run Code Online (Sandbox Code Playgroud)

B是由" - "和sprintf("%05d",bk_id)分隔的预订前缀;

请建议.

Yog*_*ngh 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 ; 
Run Code Online (Sandbox Code Playgroud)


Wil*_*ilf 2

我找到了我的解决方案:

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
Run Code Online (Sandbox Code Playgroud)

  • 和我的答案有什么不同? (2认同)