日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7/7 SELECT语句:创建计算字段

發(fā)布時間:2024/1/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7/7 SELECT语句:创建计算字段 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

計算字段:
存儲在數(shù)據(jù)庫表中的數(shù)據(jù)一般不是應(yīng)用程序所需要的格式。比如:

  • 如果想在一個字段中既顯示公司名,又顯示公司的地址,但這兩個信息一般包含在不同的表列中;
  • 城市、州和郵政編碼存儲在不同的列中(應(yīng)該這樣),但郵件標簽打印程序卻需要把它們作為一個恰當格式的字段檢索出來;
  • 列數(shù)據(jù)是大小寫混合的,但報表程序需要把所有數(shù)據(jù)按大寫表示出來;
  • 物品訂單表存儲物品的價格和數(shù)量,但不需要存儲每個物品的總價格(用價格乘以數(shù)量即可)。為打印發(fā)票,需要物品的總價格;
  • 需要根據(jù)表數(shù)據(jù)進行總數(shù)、平均數(shù)計算或其他計算。
  • 在上述每個例子中,存儲在表中的數(shù)據(jù)都不是應(yīng)用程序所需要的。我們需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計算或格式化過的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機應(yīng)用程序或報告程序中重新格式化。

    計算字段并不實際存在于數(shù)據(jù)庫表中,計算字段是運行時在SELECT語句內(nèi)創(chuàng)建的。
    只有數(shù)據(jù)庫知道SELECT語句中哪些列是實際的表列,哪些列是計算字段。從客戶機(如應(yīng)用程序)的角度來看,計算字段的數(shù)據(jù)是以與其他列的數(shù)據(jù)相同的方式返回的。

    序號說明操作
    1拼接字段Concat()函數(shù)
    2使用別名AS關(guān)鍵字,順序:AS—FROM—WHERE—ORDER BY—LIMIT
    3執(zhí)行算術(shù)計算+、-、*、/
    4刪除多余空格Trim()、RTrim()、LTrim()

    以下為數(shù)據(jù)庫SQLTEST中的三張表,其結(jié)構(gòu)和內(nèi)容如下:

    1. 拼接字段

    拼接(concatenate):將值聯(lián)結(jié)到一起構(gòu)成單個值。
    MySQL的不同之處:多數(shù)DBMS使用+或||來實現(xiàn)拼接,MySQL則使用Concat()函數(shù)來實現(xiàn)。所以當把SQL語句轉(zhuǎn)換成MySQL語句時一定要把這個區(qū)別銘記在心。

    mysql> SELECT Concat(Stu_Name, '(', Class_id, ')')-> FROM t_stu_profile-> ORDER BY Class_id; +--------------------------------------+ | Concat(Stu_Name, '(', Class_id, ')') | +--------------------------------------+ | 郭東(0611) | | 錢南(0611) | | .test(0611) | | 李西(0612) | | test(0612) | | 張北(0613) | | 王五(0614) | | 趙七(0615) | +--------------------------------------+

    2. 使用別名

    SQL支持列別名。別名(alias)是一個字段或值得替換名,別名用AS關(guān)鍵字賦予;
    順序:AS—FROM—WHERE—ORDER BY—LIMIT。

    mysql> DELETE-> FROM t_stu_profile-> WHERE Stu_Name REGEXP 'test$'; mysql> INSERT t_stu_profile-> VALUES-> (7, ' test', 'F', 15, '0615'),-> (8, 'test ', 'M', 18, '0612 '); mysql> SELECT Concat(LTrim(Stu_Name), '[', RTrim(Class_id), ']')-> AS new_stu_profile-> FROM t_stu_profile-> ORDER BY Class_id DESC; +-----------------+ | new_stu_profile | +-----------------+ | 趙七[0615] | | test[0615] | | 王五[0614] | | 張北[0613] | | test [0612] | | 李西[0612] | | 郭東[0611] | | 錢南[0611] | +-----------------+

    3. 執(zhí)行算術(shù)計算

    計算字段的另一常見用途是對檢索出的數(shù)據(jù)進行算術(shù)計算。

    # 創(chuàng)建新表:orderitems mysql> CREATE TABLE IF NOT EXISTS orderitems-> (prd_id TINYINT, quantity INT, item_price FLOAT); mysql> INSERT orderitems-> VALUES-> (1, 10, 5.99),-> (2, 3, 9.99),-> (3, 5, 10.00),-> (4, 1, 10.00);

    新添加一列expanded_price,用來計算總價(quantity*item_price)。

    mysql> SELECT prd_id,-> quantity,-> item_price,-> quantity*item_price AS expanded_price-> FROM orderitems; +--------+----------+------------+--------------------+ | prd_id | quantity | item_price | expanded_price | +--------+----------+------------+--------------------+ | 1 | 10 | 5.99 | 59.89999771118164 | | 2 | 3 | 9.99 | 29.969999313354492 | | 3 | 5 | 10 | 50 | | 4 | 1 | 10 | 10 | +--------+----------+------------+--------------------+

    4. 刪除多余空格

    Trim()函數(shù)可去掉串左右兩邊的空格;RTrim()函數(shù)可去掉值右邊的空格;LTrim()函數(shù)可去掉值左邊的空格。

    mysql> SELECT Concat(LTrim(Stu_Name), '[', RTrim(Class_id), ']')-> FROM t_stu_profile-> ORDER BY Class_id DESC; +----------------------------------------------------+ | Concat(LTrim(Stu_Name), '[', RTrim(Class_id), ']') | +----------------------------------------------------+ | 趙七[0615] | | test[0615] | | 王五[0614] | | 張北[0613] | | test [0612] | | 李西[0612] | | 郭東[0611] | | 錢南[0611] | +----------------------------------------------------+

    總結(jié)

    以上是生活随笔為你收集整理的7/7 SELECT语句:创建计算字段的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。