MySQL中CONCAT()的用法


MySQL中CONCAT()的用法

在日常開發過程中,特別是在書寫接口的時候,經常會遇到字符串拼接的情況,比如在返回圖片數據時,數據庫里往往存儲的是相對路徑,而接口里一般是存放絕對地址,這就需要字符串拼接了

一、通過PHP拼接

這種方法比較簡單,可以通過圓點‘.’實現

1  //獲取商品規格信息2  $sku = Db::name('product_attr')->where(['product_id'=>$id]) 3       ->field('id,attr,attr_id,stock,common_price,super_price,img') 4       ->select()->toArray(); 5  $sku = set_img_url($sku,'img');
 1 /**  2  * 功能:批量轉換圖片地址  3  *  4  * User: cyf  5  * Time: 2018/8/22 0022 18:24  6  */
 7 function set_img_url($arr = [],$str = 'thumbnail')  8 {  9     if(empty($arr)) return $arr; 10     foreach ($arr as $key=>$val) { 11         $arr[$key][$str] = get_absolute_img($val[$str]); 12  } 13     unset($val); 14     return $arr; 15 }
1 /** 2  * 功能:將圖片由相對地址轉為絕對地址 3  * 4  * User: cyf 5  * Time: 2018/8/22 0022 10:40 6  */
7 function get_absolute_img($img){ 8     return cmf_get_domain() . $img; 9 }

這種方法就是在數據庫里取出數據之后,再把數據遍歷一遍,在遍歷過程中拼接域名,所以性能上就差點了

二、MySQL拼接

1、直接通過mysql中的concat()函數進行拼接

1 //3、規格
2 $domain = cmf_get_domain(); 3 $sku = Db::name('product_attr')->where(['product_id'=>$id]) 4      ->field('id,attr,attr_id,stock,common_price,super_price,concat("'.$domain.'", img) img') 5      ->select()->toArray();

這種方法就是避免了數據的重新遍歷,直接在查數據的時候就把域名拼接上,所以性能應該就會好點(具體沒測,個人認為)

可能舉例有點復雜,下面是concat()函數的具體用法:

mysql concat(str1,str2,…) ,可以拼接多個函數

1 SELECT CONCAT('hello',',word!') str;結果為:'hello,word!'

值得注意的是:如果存在參數為null,則結果直接為null


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM