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