SQL读书笔记(三)

上一篇笔记主要是记下了SELECT的用法,还有一些过滤的方法

这一篇记下一些计算字段,非常有用,主要是用在我们需要改变查询结果格式,一下用到的是MySQL的语法,笔记大部分还是来自书本原话。。

1、拼接字段

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

mysql 拼接字符函数 concat
mysql 的concat函数可以实现数据库中字段的自由拼接 并且保存成临时字段如何值中存在null也输出

select id,username,concat( id, ‘-’ , username) as truename from pri_admins;
这样我们输出的时候格式就会变成 truename输出
AS是别名使用,在下面有解释

concat_ws函数
concat(separator,str1,str2,…) 代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
如果参数中存在NULL,则会被忽略:

select concat_ws(‘:’,’1’,’2’,NULL,NULL,NULL,’3’) from test ;

TRIM函数

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
TRIM([remstr FROM] str)
返回字符串str,删除所有 remstr 前缀或后缀。如果没有符 BOTH, LEADING, 或TRAILING给出,假定则是BOTH(默认的)。remstr为可任选的,如果未指定,空格被删除。
默认删除空格
mysql> SELECT TRIM(LEADING ‘x’ FROM ‘xxxbarxxx’);
barxxx

2、使用别名AS,这个非常重要,因为我们可能需要我们自己定义输出的格式,就可以用这个

从前面的输出可以看到,SELECT语句可以很好地拼接地址字段。但是,这个新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如 果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未命名的列不能用于客户端应用中,因为客户端没有办法引用它。 为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。请看下面的SELECT语句

SELECT Concat(vend_name, ’ (‘, vend_country, ‘)’) AS vend_title FROM Vendors ORDER BY vend_name;

输出 vend_title

Bear Emporium (USA)
Bears R Us (USA)
Doll House Inc. (USA)

SELECT语句本身与以前使用的相同,只不过这里的计算字段之后跟了文本AS vend_title。它指示SQL创建一个包含指定计算结果的名 为vend_title的计算字段。从输出可以看到,结果与以前的相同,但现在列名为vend_title,任何客户端应用都可以按名称引用这个列,就像它 是一个实际的表列一样。

3、执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算。举个例子,Orders表包含收到的所有订单,OrderItems表包含每个订单中的各项物 品。下面的SQL语句检索订单号20008中的所有物品:

SELECT prod_id, quantity, item_price FROM OrderItems WHERE order_num = 20008;

prod_id quantity item_price
———- ———– ——————–
RGAN01 5 4.9900
BR03 5 11.9900
BNBG01 10 3.4900
BNBG02 10 3.4900
BNBG03 10 3.4900
item_price列包含订单中每项物品的单价。如下汇总物品的价格(单价乘以订购数量):

SELECT prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price FROM OrderItems WHERE order_num = 20008;

prod_id quantity item_price expanded_price
———- ———– ———— —————-
RGAN01 5 4.9900 24.9500
BR03 5 11.9900 59.9500
BNBG01 10 3.4900 34.9000
BNBG02 10 3.4900 34.9000
BNBG03 10 3.4900 34.9000

输出中显示的expanded_price列是一个计算字段,此计算为quantity*item_price。客户端应用现在可以使用这个新计算列,就像使用其他列一 样。
SQL支持表7-1中列出的基本算术操作符。此外,圆括号可用来区分优先顺序。

操 作 符
+ 加
- 减
* 乘
/ 除

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小疯疯0413

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值