二十一、创建计算字段

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相关推荐

  1. mysql字段自动计算_《MySQL必知必会》计算字段

    <MySQL必知必会>计算字段 1.1 计算字段 字段(field)基本上与列( column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上. 客户 ...

  2. MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

    [0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据" ...

  3. mysql按逗号拼接起来_MySQL ----- 计算字段(Trim,Concat,as)(九)

    存储在数据库表中的数据一般不是应用程序所需要的格式: 一种是从数据库中检索出转换.计算或格式化过的数据 另一种是将检索出数据在客户机应用程序或报告程序中重新格式化 这里当然建议使用第一种,借助计算字段 ...

  4. 初识Mysql(part8)--我需要知道的5个关于计算字段的小知识

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:Concat()函数.Trim()函数.AS关键字.数值计算.测试计算 此Blog里的例子都会用下面s ...

  5. SQL学习之计算字段的用法与解析

    一.计算字段 1.存储在数据库表中的数据一般不是应用程序所需要的格式.大多数情况下,数据表中的数据都需要进行二次处理.下面举几个例子. (1).我们需要一个字段同时显示公司名和公司地址,但这两个信息存 ...

  6. SQL 必知必会·笔记5创建计算字段

    字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...

  7. QuickBI助你成为分析师——计算字段功能

    摘要: 在用户创建报表时,通过现有字段数据不能直接满足展示需求,需要进行一定建模操作.目前产品支持在数据集编辑界面进行初步建模,下面主要介绍新建字段功能,以达到展示需求. 在用户创建报表时,有时通过现 ...

  8. excel-数据透视表0.05(分组、计算字段/项 数据透视图)

    数值计算方式: 右键单元格-值显示方式 / 右键单元格-值字段设置-值显示方式 总计百分比(以总汇总为基准,各占比):行列汇总百分比(以行汇总或列汇总,行或列占比): 百分比(以某项字段为基准,与该字 ...

  9. mysql拼接两个字段_重拾MySQL之创建计算字段和函数

    一.计算字段 有时候,数据库中的数据格式不一定是使用所需要的数据格式,需要对原数据进行拼接.裁剪.计算等操作,这时就要创建计算字段. 1 拼接 顾名思义,拼接就是将原属于表中两个列的字段拼成一个列,在 ...

最新文章

  1. 用电线来传网络信号的黑科技?AirGig究竟是什么
  2. linux命令:groupdel
  3. 计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!
  4. Java中重载和复写的区别
  5. asp.net 的页面几种传值方式
  6. spacy model
  7. 递归创建多级文件目录(PHP)
  8. python如何执行代码_在Python中重新运行代码块
  9. PAT之算法/技巧:01背包
  10. CefSharp 知道这些就完事了
  11. CodeSmith激活教程
  12. 用python来开发webgame服务端
  13. 金蝶BOS 插件数据填充
  14. MAYA建模桌面一角_maya多边形建模实例-制作茶几步骤
  15. Angular项目目录结构
  16. 纠正几个不好的工作习惯
  17. 快递单号查询物流筛选出代收单号
  18. OPS and So on.
  19. linux搭建简易网站
  20. Android简介及发展历程

热门文章

  1. 转发程序无法决定链接类型
  2. mysql数据库安装在unix_Linux下的数据库二:在Linux/Unix平台安装MySQL
  3. Gradle笔记——Gradle的简介与安装
  4. Android MediaPlayer使用方法简单介绍
  5. am3352 linux 内核 编译,am335x uboot, kernel 编译
  6. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
  7. [转载] C Primer Plus 第6章 C控制语句 6.16 编程练习及答案
  8. 自动化部署kvm虚拟机_自动化虚拟助手
  9. iis php mysql 集成_如何在IIS上集成php(iis+mysql+php+zend)
  10. 2019聊大考研计算机调剂,2019年聊城大学硕士研究生预调剂工作说明