sql学习创建计算字段

    存储在数据库表中的数据一般不是应用程序所需要的格式,我们需要从数据库中检索出转换、计算、或格式化过的数据,这就是计算字段存在的意义了
       实际上,只有数据库知道select语句中那些列是实际的表列,那些列是计算字段,从客户机角度来看,他们是以相同方式返回的。
       1拼接字段
       例:Venders表中包含供应商名和位置信息,例如生成一个供应商报表,需要在格式化的名称中列出供应商的位置,此报表需要单个值,而表中数据存储在vend_name和vend_country中此外需要用括号将vend_country括起来那么我们来看看需要怎么编写
       解决办法是将两个列拼接起来,在sql的select语句中可使用一个特殊的操作符来拼接两个列此操作可用+或者两个||表示这依赖于具体的DBMS(ACCESS,SQL Server和Sybase使用+DB2、ORACLE,POSTRESQL和sybase使用||而mysql则都不支持)
       a,使用加号的例子
          select  vend_name+'('+vend_country+')' from Vendors order by vend_name;
       b,相同的语句使用||
          select vend_name||'(' ||vend_country||')' from Vendors order by vend_name;
       c,mysql不支持使用+或者||的拼接,他使用CONCAT()函数把项表拼接起来
          select CONCAT(vend_name,'(',vend_country,')') from Vendors order by vend_name;
       另外许多数据库保存填充为列宽的文本,为正确返回格式化的数据,必须去掉这些空格,这可以使用SQL的RTRIM()函数来完成
         大多数DBMS支持PTRIM()去掉右边空格,LTRIM()去掉左边空格以及TRIM()去掉两边空格
       select语句拼接字段工作做的非常好,但是此新计算列实际上并没有名字,他只是一个值,为了让客户机有办法引用他就必须给他一个别名
       select RTRIM(vend_name)+'('+RtRim(vend_country)+')' as vend_title from Vendors order by vend_name;
       2执行算术计算
       计算字段的另一种常见用途是对检索出的数据进行算术计算,比如Orders表中包含所有订单,Orderitems表中包含每个订单中各项物品下面检索订单号为20008的所有物品
       select frod_id,quantity,item_price from OrderItems where order_num = 20008;
       下面语句则包含汇总物品的价格
       select prod_id ,quantity,item_price,quantity*item_price as expanded_price from Orderitems where order_num = 20008;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值