SQL學(xué)習(xí)之計算字段的用法與解析?一、計算字段 1、存儲在數(shù)據(jù)庫表中的數(shù)據(jù)一般不是應(yīng)用程序所需要的格式。大多數(shù)情況下,數(shù)據(jù)表中的數(shù)據(jù)都需要進(jìn)行二次處理。下面舉幾個例子。 (1)、我們需要一個字段同時顯示公司名和公司地址,但這兩個信息存儲在不同表的列中。 (2)、省份、城市、郵政編碼存儲在不同的列中(大多數(shù)情況下是這樣),但郵件標(biāo)簽打印程序需要把它們作為一個有恰當(dāng)順序、格式的字段打印出來。 (3)、列數(shù)據(jù)是大小寫混合的,但報表程序需要把所有的程序按大寫表示出來。 (4)、物品訂單表存儲物品的價格和數(shù)量,不存儲每個物品的總價格,但是打印發(fā)票需要物品的總價格。上述的例子中,存儲在表中的數(shù)據(jù)都不是應(yīng)用程序所需要的,我們需要從數(shù)據(jù)中檢索出來、并轉(zhuǎn)換、計算或格式化過的數(shù)據(jù)。而不是檢索出來,再到客戶端進(jìn)行初始化。 ? 這時,計算字段就可以派上用場了,計算字段并不實際存在與數(shù)據(jù)表中,計算字段是運行在SELECT語句內(nèi)創(chuàng)建的。 字段:字段基本上與列的疑似相同,經(jīng)常互換使用,不過數(shù)據(jù)庫列一般稱為列,而術(shù)語字段通常與計算字段一起使用。 這里需要注意:只有數(shù)據(jù)庫的知道SELECT語句中哪些列是實際的表列,那些列是計算字段。從客戶端(如Web應(yīng)用程序)來看,計算字段的數(shù)據(jù)與其他列的數(shù)據(jù)的返回方式相同。 ? 在SQL語句內(nèi)可完成許多數(shù)據(jù)轉(zhuǎn)換和格式化工作都可以直接在客戶端應(yīng)用程序中完成。但一般來說在數(shù)據(jù)庫服務(wù)器上完成這些操作比在客戶端中完成要快很多! ? ? 2、拼接字段 將兩個或多個字段的值拼接到一起組成一個字段。代碼如下 select * from dbo.student 現(xiàn)在有一個需求,一個報表需要一個字段包student_deatils含學(xué)生表的姓名,年齡,性別,作為學(xué)生的基本信息,下面是解決代碼: select sname '(' ssex ',' CONVERT(varchar,sage) ')' as student_deatils from dbo.student ? ok,完成需求 注意:不同的DBMS(數(shù)據(jù)庫管理系統(tǒng))使用字符串拼接的操作符不同,Acesss和SQL Server使用的是' ',DB2、Oracle、PostgreSQL、SQLite和Open Office Base使用 '||' 。MySql和MariaDB中必須使用特殊的函數(shù)。 3、計算字段進(jìn)行算術(shù)運算 計算字段的另一種常見用途是對檢索出的數(shù)據(jù)進(jìn)行算術(shù)計算。如下代碼: select * from tb_order 現(xiàn)在由一個報表程序需要每個訂單的訂單編號、實際價格(單價*折扣)和總價格,解決代碼如下: ? select OrderId as 訂單編號,price*quantity as 實際價格,price*quantity*ordercount as 總價格 from dbo.tb_order ? ? ok,完成需求! 來源:https://www./content-2-307551.html |
|