mysql 字段等于select_mysql_select_计算字段_数据处理函数_5
二十一、创建计算字段
1、 concat() 把两个字段拼接起来
select concat(lie_name1,'间隔符',lie_name2) from
table_name;
选择出 name-type(price)
这样的格式输出,按id从小到大排序
mysql> select
concat(name,'-',type,'(',price,')') from goods order by id;
+-------------------------------------+
| concat(name,'-',type,'(',price,')') |
+-------------------------------------+
| fangbianmi-A(1) |
| mianbao-A(5) |
| kele-A(50) |
| meat-B(13) |
| meat-A(18) |
| fish-B(16) |
| fish-A(20) |
| milk-C(3) |
| T-shirt-D(60) |
| .pen-D(30) |
| book .-D(20) |
| yagao-D(10) |
| xiangjiao-A(8) |
| guo-D(160) |
| wan -D(8) |
| yashua-D(11) |
| / cup-D(35) |
+-------------------------------------+
17 rows in set (0.00 sec)
括号用来扩出间隔符,本例子中是- (),实际上我认为是以字符型的形式直接输出而已
2、rtrim 删除字段右侧的多余空格
select rtrim(lie_name1) from table_name;
上个例子可以看出,name=wan的这个字段右侧有空格,我们把这个空格消除看看
mysql> select concat(rtrim(name),'-') from
goods where id = 14;
+-------------------------+
| concat(rtrim(name),'-') |
+-------------------------+
| wan- |
+-------------------------+
1 row in set (0.00 sec)
这个为了能显示出来,在name后面加上一个‘-’,这样能看出是否有空格。
3、alias 别名,使用as
上面我们concat()函数,把多个字段拼接成一个新的字段,但是他们的字段名不太好,我们可以使用as这个函数来实现
说两个例子
as可以给字段(列)取一个名字,比如说我们上面那样,拼在一起的列,也可以给表取一个别名,这样感觉上只是简便了sql的书写
给字段取别名as
mysql> select concat(rtrim(name),'-',price) as
GOODS from goods;
+--------------+
| GOODS |
+--------------+
| fangbianmi-1 |
| mianbao-5 |
| kele-50 |
| meat-13 |
| meat-18 |
| fish-16 |
| fish-20 |
| milk-3 |
| T-shirt-60 |
| .pen-30 |
| book .-20 |
| xiangjiao-8 |
| / cup-35 |
| wan-8 |
| yashua-11 |
| yagao-10 |
| guo-160 |
+--------------+
17 rows in set (0.01 sec
把字段名字该成了GOODS
给表取别名as
mysql> select w.id,w.name,g.name as goods from
worker as w,goods as g where g.id in (1,2,3) and w.id=g.id;
+----+----------+------------+
| id | name | goods
|
+----+----------+------------+
| 1 | zhangsan | fangbianmi |
| 2 | lisi | mianbao |
| 3 | wangwu | kele
|
+----+----------+------------+
3 rows in set (0.00 sec)
这个不太好看,是这样的,给worker as w,goods as g,
然后我们在拼接两个表的列的时候,就很轻松了,不容再输入繁琐的表全称,需要注意的是,这里把两个表的id当做外键来使用了。
4、执行数据计算
因为我做表的失误,现在假设goods表中,id为该物品的购买数量。现在计算前五个商品的价格总和
mysql> select name,price,id as
quantity,id*price as sum from goods where id <=
5;
+------------+-------+----------+------+
| name | price | quantity | sum
|
+------------+-------+----------+------+
| fangbianmi | 1 |
1 | 1
|
| mianbao |
5 | 2 |
10 |
| kele | 50 |
3 | 150 |
| meat | 13 |
4 | 52 |
| meat | 18 |
5 | 90 |
+------------+-------+----------+------+
5 rows in set (0.00 sec)
mysql支持+ - * /,如果想控制计算的顺序,可以使用(),这样比较直观
二十二、数据处理函数
相对于其他的sql语句,函数的可移植性比较差,因为每种DBMS都有自己的函数库,但是语句大部分都差不多,所以如果要使用函数的话,最好用#写好注释
1、文本处理函数
rtrim()本身就是一个文本处理的函数
upper(),作用是将字段改为大写
mysql> select upper(name) as NAME from goods
order by id;
+------------+
| NAME |
+------------+
| FANGBIANMI |
| MIANBAO |
| KELE |
| MEAT |
| MEAT |
| FISH |
| FISH |
| MILK |
| T-SHIRT |
| .PEN |
| BOOK . |
| YAGAO |
| XIANGJIAO |
| GUO |
| WAN |
| YASHUA |
| / CUP |
+------------+
17 rows in set (0.01 sec)
文本处理函数还有很多,这里只说常用的
left(lie_name1,num) 输出这一列左边num个字符
rigth(lie_name1,num) 输出这一列右边num个字符
lower(lie_name) 转换为小写
ltrim(lie_name) 清除字段左边的空格
rtrim(lie_name) 清除字段右边的空格
lower(lie_name) 转换字段为小写
substring(lie_name,num1,num2) 取字段第num1个字符还是的后面num2个字符
2、日期和时间处理函数
日期数据类型:
DATE 表示1000-01-01~~~9999-12-31,格式为YYYY-MM-DD
TIME 格式为 HH:MM:SS
DATETIME DATE和TIME的组合
YEAR
用量为数字表示,范围是70(1970)~~~69(2069),用四位数字表示,范围是1901~~2155
adddate() 增加一个日期(天、周)
addtime() 增加一个时间(时、分)
curdate() 返回当前日期
curtime() 返回当前时间
date() 返回日期时间的日期部分
datediff() 尖酸两个日期之差
date_add() 高度灵活的日期运算函数
date_format() 返回一个格式化的日期或时间串
day() 返回一个日期的天数
dayofweek() 对于一个日期,返回对应的星期几
hour() 返回一个时间的小时部分
minute() 返回一个时期的分钟部分
month() 返回一个日期的月份部分
now() 返回当前日期和时间
second() 返回一个时间的秒部分
time() 返回一个日期时间的时间部分
year() 返回一个日期的年份部分
修改一下goods表,加一个date列
mysql> alter table goods add column date
datetime;
mysql> select * from goods;
+----+------------+------+------------+-------+---------------------+
| id | name | type | production | price | date
|
+----+------------+------+------------+-------+---------------------+
| 1 | fangbianmi | A | zhengzhou |
1 | 2011-12-13 05:12:55
|
| 2 | mianbao | A |
zhengzhou | 5 | 2111-12-11 08:02:25 |
| 3 | kele | A | xian | 50 |
2102-05-15 10:08:35 |
| 4 | meat | B | beijing |
13 | 2101-01-15 18:08:35
|
| 5 | meat | A | beijing |
18 | 1902-05-15 10:09:35
|
| 6 | fish | B | shandong |
16 | 2101-05-17 12:09:35
|
| 7 | fish | A | shandong |
20 | 2001-08-17 14:03:35
|
| 8 | milk | C | shandong |
3 | 2000-09-27 05:53:05
|
| 9 | T-shirt | D |
guangzhou | 60 | 2004-07-20 05:53:44 |
| 10 | .pen | D |
shenzhen | 30 | 2011-08-20 05:53:04 |
| 11 | book . | D |
shenzhen | 20 | 2011-01-30 19:53:04 |
| 12 | xiangjiao | A | shenzhen |
8 | 2012-12-25 10:23:34
|
| 16 | / cup | D |
guangzhou | 35 | 2142-08-11 19:04:19 |
| 14 | wan | D | tianjin |
8 | 2012-08-21 10:11:44
|
| 15 | yashua | D
| guangzhou
| 11 |
2042-04-21 09:04:07 |
| 11 | yagao | D |
guangzhou | 10 | 2011-01-30 19:53:04 |
| 13 | guo | D | tianjin |
160 | 2011-03-25 16:43:04 |
+----+------------+------+------------+-------+---------------------+
17 rows in set (0.00 sec)
我们存储的数据类型是datetime,包含日期和时间。
如果我们只按照数据的日期,找出需要的日期。就需要date()函数
select lie_name1 from table_name where
date(date_name)='YYYY-MM-DD'
mysql> select name from goods where
date(date)='2012-8-21';
+--------+
| name |
+--------+
| wan |
+--------+
1 row in set (0.00 sec)
假如我们想搜索2011年1月到5月的所有name
mysql> select name from goods where date(date)
between '2011-01-01' and '2011-5-31';
+---------+
| name |
+---------+
| book . |
| yagao |
| guo |
+---------+
3 rows in set (0.00 sec)
另外一种方法
mysql> select name from goods where
year(date)=2011 and month(date) in (1,2,3,4,5);
+---------+
| name |
+---------+
| book . |
| yagao |
| guo |
+---------+
3 rows in set (0.04 sec)
3、数值操作函数
这个函数是DBMS种最统一的函数
abs() 返回一个数的绝对值
cos() 返回一个角度的余弦
exp() 返回一个数的指数值
mod() 返回除操作的余数
pi() 返回圆周率
rand() 返回一个随机数
sin() 返回正弦
tan() 返回正切
选择ID除以3等于1的值
mysql> select name from goods where
mod(id,3)=1;
+------------+
| name |
+------------+
| fangbianmi |
| meat |
| fish |
| .pen |
| / cup |
| guo |
+------------+
6 rows in set (0.00 sec)
mysql 字段等于select_mysql_select_计算字段_数据处理函数_5相关推荐
- mysql字段自动计算_《MySQL必知必会》计算字段
<MySQL必知必会>计算字段 1.1 计算字段 字段(field)基本上与列( column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上. 客户 ...
- MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据
[0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据" ...
- mysql按逗号拼接起来_MySQL ----- 计算字段(Trim,Concat,as)(九)
存储在数据库表中的数据一般不是应用程序所需要的格式: 一种是从数据库中检索出转换.计算或格式化过的数据 另一种是将检索出数据在客户机应用程序或报告程序中重新格式化 这里当然建议使用第一种,借助计算字段 ...
- 初识Mysql(part8)--我需要知道的5个关于计算字段的小知识
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:Concat()函数.Trim()函数.AS关键字.数值计算.测试计算 此Blog里的例子都会用下面s ...
- SQL学习之计算字段的用法与解析
一.计算字段 1.存储在数据库表中的数据一般不是应用程序所需要的格式.大多数情况下,数据表中的数据都需要进行二次处理.下面举几个例子. (1).我们需要一个字段同时显示公司名和公司地址,但这两个信息存 ...
- SQL 必知必会·笔记5创建计算字段
字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...
- QuickBI助你成为分析师——计算字段功能
摘要: 在用户创建报表时,通过现有字段数据不能直接满足展示需求,需要进行一定建模操作.目前产品支持在数据集编辑界面进行初步建模,下面主要介绍新建字段功能,以达到展示需求. 在用户创建报表时,有时通过现 ...
- excel-数据透视表0.05(分组、计算字段/项 数据透视图)
数值计算方式: 右键单元格-值显示方式 / 右键单元格-值字段设置-值显示方式 总计百分比(以总汇总为基准,各占比):行列汇总百分比(以行汇总或列汇总,行或列占比): 百分比(以某项字段为基准,与该字 ...
- mysql拼接两个字段_重拾MySQL之创建计算字段和函数
一.计算字段 有时候,数据库中的数据格式不一定是使用所需要的数据格式,需要对原数据进行拼接.裁剪.计算等操作,这时就要创建计算字段. 1 拼接 顾名思义,拼接就是将原属于表中两个列的字段拼成一个列,在 ...
最新文章
- 用电线来传网络信号的黑科技?AirGig究竟是什么
- linux命令:groupdel
- 计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!
- Java中重载和复写的区别
- asp.net 的页面几种传值方式
- spacy model
- 递归创建多级文件目录(PHP)
- python如何执行代码_在Python中重新运行代码块
- PAT之算法/技巧:01背包
- CefSharp 知道这些就完事了
- CodeSmith激活教程
- 用python来开发webgame服务端
- 金蝶BOS 插件数据填充
- MAYA建模桌面一角_maya多边形建模实例-制作茶几步骤
- Angular项目目录结构
- 纠正几个不好的工作习惯
- 快递单号查询物流筛选出代收单号
- OPS and So on.
- linux搭建简易网站
- Android简介及发展历程
热门文章
- 转发程序无法决定链接类型
- mysql数据库安装在unix_Linux下的数据库二:在Linux/Unix平台安装MySQL
- Gradle笔记——Gradle的简介与安装
- Android MediaPlayer使用方法简单介绍
- am3352 linux 内核 编译,am335x uboot, kernel 编译
- [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
- [转载] C Primer Plus 第6章 C控制语句 6.16 编程练习及答案
- 自动化部署kvm虚拟机_自动化虚拟助手
- iis php mysql 集成_如何在IIS上集成php(iis+mysql+php+zend)
- 2019聊大考研计算机调剂,2019年聊城大学硕士研究生预调剂工作说明