SQL | 计算字段

这篇具有很好参考价值的文章主要介绍了SQL | 计算字段。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

7-创建计算字段

7.1-计算字段

存储在数据库中的数据一般不是我们所需要的字段格式,

  • 需要公司名称,同时也需要公司地址,但是这两个数据存储在不同的列中。

  • 省,市,县和邮政编码存储在不同的列中,但是当我们需要发快递时,需要将他们组合在一起。

  • 某一列的数据是大小写混写的,但是偶尔我们需要全部大写输出。

  • 商品信息存储时,我们一般存储的有商品的数量,商品的总价,但是打印发票时我们需要知道商品的总价格。

  • 例如,总数,平均数的计算等等。

上述这些例子,都不是应用程序应该做的事情,只需要我们检索时,经过转换,计算过的数据即可。这就是计算字段可以派上的用场。

字段,与列是相同的概念,经常互换使用,不过数据库列一般称为列,而字段这个术语通常在计算字段这种场合下使用。

需要特别注意,只有数据库知道select语句中,哪些列是实际的数据库表列,哪些列为计算字段。但是从客户端看,计算字段和数据库表列是一样的。

在SQL语句内可完成的许多转换和格式化工作都可以直接在客户端应用程序内完成。但一般来说,在数据库服务器上完成这些操作比在客户端中完成要快得多

7.2-拼接字段

例如:Vendors表包含供应商名和地址信息。假如要生成一个供应商报表,需要在格式化的名称(位置)中列出供应商的位置。

此报表需要一个值,而表中数据存储在两个列vend_name和vend_country中。此外,需要用括号将vend_country括起来,这些东西都没有存储在数据库表中。

拼接:将值联结到一起(将一个值附加到另一个值)构成单个值

解决办法是把两个列拼接起来。在SQL中的SELECT语句中,可使用一个特殊的操作符来拼接两个列。根据你所使用的DBMS,此操作符可用加号(+)或两个竖杠(||)表示,SQL Server使用+号。DB2、Oracle、PostgreSQL和SQLite使用||。在MySQL和MariaDB中,必须使用特殊的函数

使用加号(+)的例子:

SELECT vend_name + '(' + vend_country + ')'
FROM Vendors
ORDER BY vend_name;

使用两个竖杠(||)的例子:

SELECT vend_name || '(' || vend_country || ')'
FROM Vendors
ORDER BY vend_name;

MySQLMariaDB时需要使用的语句:

SELECT Concat(vend_name, ' (', vend_country, ')') 
FROM Vendors
ORDER BY vend_name;

SQL | 计算字段,# SQL,sql,数据库

由结果可以知道,上述语句先取出存储在vend_name中的名称,然后取出vend_country中的国家,然后使用Concat函数进行拼接,拼接后就会输出上述结果。

注意:有些(并不是所有数据库)数据库进行拼接的时候,会输出为列宽,也就是会多很多空格,所以我们需要使用SQL的RTRIM()函数来处理多余的空格。RTRIM()函数去掉值右边的所有空格。

例如:SELECT vend_name + '(' + RTRIM(vend_country) + ')'

TRIM函数:大多数DBMS都支持RTRIM()(正如刚才所见,它去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及TRIM()(去掉字符串左右两边的空格)。

7.2.1 使用别名

SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。

select Concat(vend_name,'(',vend_country,')')
as vend_title
from vendors
order vend_name;

SQL | 计算字段,# SQL,sql,数据库

查询到的列会将列名设置为vend_title

AS: as子句是可选的,但是如果有计算字段和拼接字段出现的时候,最好使用它,这被视为一条最佳实践。

别名的其他用途 别名还有其他用途。常见的用途包括在实际的表列名包含不合法的字符(如空格)时重新命名它,在原来的名字含混或容易误解时扩充它。

别名 别名的名字既可以是一个单词,也可以是一个字符串,可读性太差,无论是取别名还是取字段名应当见名知意。如果是后者,字符串应该括在引号中。虽然这种做法是合法的,但不建议这么去做。多单词的名字可读性高,不过会给客户端应用带来各种问题。因此,别名最常见的使用是将多个单词的列名重命名为一个单词的名字。

导出列 别名有时候也被称为导出列,代表的是相同的东西。

7.3-使用算术计算

计算字段另一个用途是对检索出的字段进行算术计算。Orders表包含收到的所有订单,OrderItems表包含每个订单中的各项物品。

select prod_id,quantity,item_price
from orderitems
where order_num = 20008;

 SQL | 计算字段,# SQL,sql,数据库

上述SQL语句检索订单号为20008的所有订单。

检索到的数据中,item_price为商品单价,如果想要计算每种产品的总价。

select prod_id,quantity,item_price,quantity*item_price as total
from orderitems
where order_num = 20008;

 SQL | 计算字段,# SQL,sql,数据库

 文章来源地址https://www.toymoban.com/news/detail-647671.html

通过数量×单价=总价,就可以得到每种产品的总价值。

SQL支持的基本操作符:

SQL | 计算字段,# SQL,sql,数据库

如何测试计算 SELECT语句为测试、检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问和处理表达式,例如SELECT 3 * 2;将返回6,SELECT Trim(' abc ');将返回abc,SELECT Curdate();使用Curdate()函数返回当前日期和时间。现在你明白了,可以根据需要使用SELECT语句进行检验。

练习

  1. 别名的常见用法是在检索出的结果中重命名表的列字段(为了符合特定的报表要求或客户需求)。编写SQL语句,从Vendors表中检索vend_id、vend_name、vend_address和vend_city,将vend_name重命名为vname,将vend_city重命名为vcity,将vend_address重命名为vaddress。按供应商名称对结果进行排序(可以使用原始名称或新的名称)。

    select vend_id,vend_name as vname,vend_address as vaddress,vend_city as vcity
    from vendors
    order by vname;

    SQL | 计算字段,# SQL,sql,数据库

     

  2. 我们的示例商店正在进行打折促销,所有产品均降价10%。编写SQL语句,从Products表中返回prod_id、prod_price和sale_price。sale_price是一个包含促销价格的计算字段。提示:可以乘以0.9,得到原价的90%(即10%的折扣)。

    select prod_id,prod_price,prod_price*0.9 as sale_price
    from products;

    SQL | 计算字段,# SQL,sql,数据库

     

 

到了这里,关于SQL | 计算字段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过sql语句查询出某个字段在数据库中的某个表

    新入职的小伙伴,肯定还没熟悉数据库中表于表的关系以及表中的字段的含义是什么,就需要进行需求开发,导致会出现对某个字段在哪张表里面都分辨不清,不过不要怕,可以利用已下sql语句快速找到。(要注意的是,此方法可能不适用于所有类型的数据库系统,但对于大

    2024年02月16日
    浏览(41)
  • mysql数据库使用sql对特殊分隔符分隔的字段进行统计

    需求 在一个数据库表中有一个字段中的数据是通过特殊符号进行分隔的,现需要统计分隔符分开的各数据的条数。 数据准备  现需统计各个绝技的人数☺ 思路 使用sql根据逗号将一行数据拆分成多行数据 ,然后使用group by对拆分的数据进行统计。 三种方式,相同的原理 使用

    2023年04月17日
    浏览(74)
  • 用bat 命令 修改sql文件中的数据库名字 新的名字通过读取配置文件中的字段获取

    在批处理脚本中,如果新数据库名存储在配置文件(比如config.ini)中的某个字段内,可以按照以下步骤进行: 假设你的配置文件内容如下: 要读取这个值并用于替换.sql文件中的旧数据库名,请使用以下批处理脚本: 在这个脚本中,首先通过 findstr 和 for /f 命令组合读取配置

    2024年02月02日
    浏览(43)
  • 数据库编程大赛:一条SQL计算扑克牌24点

    你是否在寻找一个平台,能让你展示你的SQL技能,与同行们一较高下?你是否渴望在实战中提升你的SQL水平,开阔你的技术视野?如果你对这些都感兴趣,那么本次由NineData主办的《数据库编程大赛》,将是你的最佳选择! 本次数据库编程大赛的奖项安排:一等奖(1人)、二

    2024年02月03日
    浏览(23)
  • 三、计算机理论-关系数据库-结构化查询语言SQL

    SQL 概述 是一种介于关系代数与关系演算之间的语言,现成为关系数据库的标准语言 特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(直接使用或者嵌入高级语言使用)、语言简洁,易学易用。 四大功能如下: SQL功能 动词 数据查

    2024年01月24日
    浏览(36)
  • 数据库sql 根据身份证计算年龄段mysql、oracle

    mysql: mysql通过函数可以精确到日 结果: Oracle: oracle只是年份相减,不够精确 结果:

    2024年02月12日
    浏览(31)
  • 数据库SQL函数 根据身份证号/出生年月 精确计算年龄(Oracle/MySQL)

    问题 根据身份证号统计年龄(18位) Oracle 思路 (1)Substr()函数在Oracle使用中表示被劫取的字符串表达式,截取字符串的内容。 (2)To_date()函数可以转换不同格式的日期,通过使用to_date函数可以将字符串类型的日期转换成date格式。 (3)Months_between()函数反悔两个日期之间的

    2024年02月11日
    浏览(27)
  • 将excel数据导入到SQL server数据库,SQL server引入导入excel报表,如何解决“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”问题

    目录 版本: 文章主要内容:  未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 新版本不同的设置的地方:   SQL server2018、excel 2016 1、将excel数据导入到SQL server数据库, 2、SQL server引入导入excel报表, 3、如何解决“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    2024年02月11日
    浏览(32)
  • 使用Microsoft SQL Server Managemant Studio从服务器上面复制数据库到另一台计算机上(2)

    一、配置SQL server 2019 配置管理器 1)进入该界面后,点击SQL Server服务,启动SQL Server代理为运行状态。 2) 点击SQL Server网络配置,启用其下面的TCP/IP协议。 3)将IP地址及端口正确填写,选择已启用。  4)注意将目标服务器和当下主机均按照上述操作流程进行操作。操作不当

    2024年02月08日
    浏览(39)
  • SQL Server 数据库之SQL Server 数据库的安全设置

    数据库服务器是所有应用的数据中转站,若数据库服务被恶意攻击,可能会造成数据泄露、数据丢失、数据被恶意篡改等诸多无法挽回的损失; 所以,对数据库进行安全设置是每一个数据库管理人员都应掌握的知识; SQL Server 登录模式分为 “Windows 身份验证模式” 和 “SQL

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包