SQL必知必會 建立計算字段 七

2021-09-24 09:04:43 字數 2033 閱讀 1699

儲存在表中的資料都不是應用程式所需要的,我們需要直接從資料庫中檢索出轉換,計算或格式化過的資料,而不是檢索出資料,然後再在客戶端應用程式中重新格式化。與前面介紹的列不同,計算欄位並不實際存在於資料庫表中。

注意:1、字段:基本上與列的意思相同,經常互換使用,不過資料庫列一般稱為列,而術語字段通常與計算字段一起使用。

2、只有資料庫知道select語句中哪些列是實際的表列,哪些列是計算字段。從客戶端(如應用程式)來看,計算欄位的資料與其他列的資料的返回方式相同。

3、在sql語句內可完成的許多轉換和格式化工作都可以直接在客戶端應用程式內完成。但一般來說,在資料庫伺服器上完成這些操作比在客戶端上完成要快得多。

拼接:將值聯結到一起(將乙個值附加到另乙個值)構成單個值。

select vend_name + '(' + vend_country + 『)』

from vendors

order by vend_name;

#使用加號的是access和sql server

select vend_name || '(' || vend_country || 『)』

from vendors

order by vend_name;

#使用||的是db2,oracle,postgresql,sqlite和open office base

select concat(vend_name , '(' + vend_country , 『)』)

from vendors

order by vend_name;

#需要使用特殊函式的是mysql和mariadb

select rtrim(vend_name) || '(' || rtrim(vend_country) || 『)』

from vendors

order by vend_name;

#大多數dbms都支援rtrim(),ltrim(),trim()

select rtrim(vend_name) + '(' + rtrim(vend_country) + 『)』 as  vend_title

from vendors

order by vend_name;

#別名(alias)是乙個欄位或值的替換名。

注意:

1、在很多dbms中,as關鍵字是可選的,不過最好使用它,這被視為一條最佳實踐。

2、別名還有其他用途,常見的有包括在實際的表列名包含不合法的字元(如空格)時重新命名它,在原來的名字含混或容易誤解時擴充它。

3、別名可以時乙個單詞,也可以時乙個字串,如果時乙個字串,應該放在引號裡面,但是不建議這麼做。

4、別名有時也稱為匯出列,不管怎麼叫,他們所代表的時相同的東西。

輸入:

select prod_id.quantity,item_price,quantity*price as expanded_price

from orderitems

where order_num = 20008;

輸出:

分析:

輸出中顯示的expanded_price列是乙個計算字段,此計算為quantity*item_price。客戶端應用現在可以使用 這個新計算列,就像使用其他列一樣。

注意:1、select語句為測試,檢驗函式和計算提供了很好的方法。雖然select通常用於從表中檢索資料,但是省略了from子句後就是簡單的訪問和處理表示式,例如select 3*2;將返回6;select trim(『 abc 』 ),將返回abc;select now(),將返回當前日期和時間。所以,可以根據需求使用select語句進行檢驗。

SQL必知必會筆記七(建立計算字段)

一 計算字段 儲存在資料庫表中的資料一般不是應用程式所需要的格式 例如 需要顯示公司名,同時還需要顯示公司的位址,但這兩個資訊儲存在不同的表列中。列資料是大小寫混合的,但報表程式需要把所有資料按大寫表示出來。物品訂單表儲存物品的 和數量,不儲存每個物品的總 用 乘以數量即可 但為列印發票,需要物品的...

SQL必知必會 建立計算字段

sql必知必會 讀書筆記 儲存在資料庫表中的資料一般不是應用程式所需要的格式,下面舉幾個例子。計算欄位是執行時在select語句內建立的。1.拼接字段 vendors表包含供用商名和位址資訊。假如要生成乙個 商報表,需要格式化的名稱中列出 商的位置。拼接 將值聯結在一起 將乙個值附加到另乙個值 構成...

sql必知必會學習記錄(七) 建立計算字段

拼接字段 在mysql的select語句中,可使用concat 函式來拼接兩個列。select concat vend name,vend country,from vendors order by vend name 在mysql 中,rtrim 函式可以去掉值右邊的所有空格。還支援ltrim 去...