SQL学习五、计算字段
文章最开始发布在简书,我自己又复制过来了,这篇文章简书的链接
很多时候,我们需要的数据比如详细地址,订单的总价等在数据库中可能存储在不同字段或不同表中,也可能需要对多个字段的数值进行运算得出。这种时候我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。
虽然在 SQL 语句内可完成的许多转换和格式化工作都可以直接在客户端应用程序内完成。但一般来说,在数据库服务器上完成这些操作比在客户端中完成要快得多。
有很多新手程序员或者爱偷懒的程序员喜欢是把数据一股脑儿的查出来全丢给应用程序处理,这样是不专业也是不友好的编程思维,
1、查询不需要的数据会影响查询速度
2、传输不需要的数据会影响传输的速度
3、应用程序分析、计算、格式化数据也需要时间
最终造成的就是系统交互慢、卡顿,软件开发是一个团队协作的工作,
我们应该考虑的是怎么优化程序性能,而不是怎样偷懒,把工作推给别人。
所以,我们大概可以知道了,计算字段并不实际存在于数据库表中,而是运行时在 SELECT 语句内创建的。
下面我们来看下一些常见的计算字段的操作:
1、拼接字段
将多个值联结到一起(将一个值附加到另一个值)构成单个值。
在 SQL中的 SELECT 语句中,可使用一 个特殊的操作符来拼接两个列。
1、根据你所使用的 DBMS,此操作符可用 加号(+)或两个竖杠(||)表示。
2、在 MySQL和 MariaDB中,必须使用 Concat 函数。
3、Access和 SQL Server使用+号。
4、DB2、Oracle、PostgreSQL、SQLite和 Open Office Base使用||。
比如,我们需要查询工作人员的部门详情,需要把org
、group
、groupName
这三个字段的值拼接起来
需要注意的是group是SQL关键字,所以在做SQL查询的时候,应该用" "把group包裹起来,表明此为查询字段而非关键字
利用||拼接字段查询
查询语句:
SELECT org || '-' || "group" || '-' || groupName FROM user
查询结果:
虽然我们把相关字段拼接起来了,但是列名不是我们想要的
使用别名
查询语句简易写法:
SELECT (org || '-' || "group" || '-' || groupName) org FROM user
使用AS关键字的查询语句:
SELECT (org || '-' || "group" || '-' || groupName) AS org FROM user
查询结果:
去掉空格
前面也提到了由于有很多DBMS 会使用空格进行文本列的填充,而我们在查询或者拼接这些字符串的时候是不需要这些空格的,所以我们可以利用下面的函数去掉文本列中的这些空格。
- RTRIM(),去掉右边所有的空格
SELECT (RTRIM(org) || '-' || RTRIM("group") || '-' || RTRIM(groupName)) org FROM user
- LTRIM(),去掉左边所有的空格
SELECT (LTRIM(org) || '-' || LTRIM("group") || '-' || LTRIM(groupName)) org FROM user
- TRIM(),去掉左右两边的所有空格
SELECT (TRIM(org) || '-' || TRIM("group") || '-' || TRIM(groupName)) org FROM user
2、算术计算
算术计算也是计算字段中一个常见的用途,比如上面提到的计算总价。
SQL支持基本的算术操作符,并且可以用圆括号来区分优先顺序
操作符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
比如,我们现在有这样一张订单表
字段及说明如下:
字段 | 说明 |
---|---|
goodsName | 商品名称 |
quantity | 商品数量 |
item_price | 商品单价 |
orderNo | 订单编号 |
userId | 用户ID |
userName | 用户名称 |
orderTime | 订单时间 |
现在我们需要查询:用户名、订单编号、订单时间、商品名称、商品单价、商品数量、订单总价,这些数据
虽然表中没有订单总价这个属性值,但是我们可以通过算术计算得到,使用的SQL如下:
SELECT userName, orderNo, orderTime, goodsName,item_price, quantity, item_price*quantity AS totalPrice FROM "oderlist"
查询的结果
SQL学习五、计算字段相关推荐
- SQL学习之计算字段的用法与解析
一.计算字段 1.存储在数据库表中的数据一般不是应用程序所需要的格式.大多数情况下,数据表中的数据都需要进行二次处理.下面举几个例子. (1).我们需要一个字段同时显示公司名和公司地址,但这两个信息存 ...
- Google Earth Engine(GEE)实例代码学习五——计算山体阴影(HillShade)
标题 本文分享利用数字高程模型SRTMS数据,模拟太阳方位角由0到360度变化的山体阴影. 首先引入计算山体阴影的计算公式 二.山体阴影计算方法 山体阴影的计算公式如下 (1) Hillshade = ...
- 【数据分析】关于学习SQL的五个常见问题?
对从事数据工作的小伙伴来说,SQL几乎是必备技能,写得一手好SQL说明你是一个合格的'取数民工'. SQL如何从菜鸟到高手呢,一般分三步走: 熟悉基本的增删改查语句及函数,包括select.where ...
- SQL 必知必会·笔记5创建计算字段
字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...
- sql update 多个字段_SQL学习之路-20190707
SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言:为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支 ...
- mysql记录和字段_科学网—MySQL学习笔记:计算同一条记录内各字段之和,并判断是否归一 - 丁祥欢的博文...
★计算同一记录中不同字段之和 背景说明:MainDB表内有几十个字段用于存放配方数据,需要将它们加起来看看是否归一. 由于MySQL没有类似高版本Access那样的计算字段,因为需要用SQL语法来处理 ...
- 2字段添加注释_Tableau学习系列(7):计算字段
计算字段是使用函数和运算符构造公式,对数据源字段(包括维度.度量.参数等)进行重新定义的字段. 1 创建计算字段 这里使用自带超市的数据,对各省市销售额从高到低排序进行可视化,但是如果想对各省销售额划 ...
- SQL学习笔记6-决胜秋招
目录 第六章:决胜秋招 Section A 练习一: 各部门工资最高的员工(难度:中等) 练习二: 换座位(难度:中等) 练习三: 分数排名(难度:中等) 练习四:连续出现的数字(难度:中等) 练习五 ...
- SQL学习(2):大厂真题实例-视频平均播放进度
SQL学习(2):大厂真题实例-视频平均播放进度 题目来源:<牛客题霸:SQL大厂真题>: 01 某音短视频 SQL2 平均播放进度大于60%的视频类别 文章目录 SQL学习(2):大厂真 ...
最新文章
- 曙光服务器bios设置_浪潮服务器PM8060阵列卡,如何做热备盘?操作相对有点复杂...
- 硝烟四起的云服务双十一促销大战,谁更便宜?
- python培训班一般多少钱-报个python培训班多少钱
- web---jsp文件乱码的解决办法
- js实现kmp算法_「leetcode」459.重复的子字符串:KMP算法还能干这个!
- P5212-SubString【LCT,SAM】
- 外设驱动库开发笔记27:ESP8266无线通讯驱动
- 定了!华为P30/P30 Pro正式官宣:3月26日见
- 生产环境的分布式任务调度框架如何选择?quartz、xxl-job、Elastic-Job、Saturn
- java 正则regex_Java中的正则表达式– Java Regex示例
- wpf 如何实现窗口浮动_如何实现工作表数据与UserForm窗口的交互,显示第一条记录...
- 2-15 复合类型概述
- 【Web 三件套】个人简单博客系统页面搭建(附源码)
- Unity3D利用代码生成脚本模板
- Kconfig的两种用法
- SQL Server select 英文区分大小写
- pcntl php windows_PHP各版本安装pcntl扩展
- threejs+angular 实现面积测量
- 嵌入式入门学习笔记6:[转]嵌入式开发需要学习哪些东西
- Maven项目中,添加依赖项后仍然出现找不到该jar包的解决方法