mysql 限定符_《MySQL必知必会》学习笔记(五)

第9章 使用正则表达式进行搜索

第10章 创建计算字段

正则表达式:用来匹配文本的特殊的串(字符集合)。

正则表达式用正则表达式语言来建立,它是用来完成匹配特殊的串的一种特殊语言。正则表达式有特殊的语法和指令,MySQL正则表达式只是正则表达式的一个很小的子集。

REGEXP关键字:告诉MySQL后面所跟的内容作为正则表达式处理。

LIKE与REGEXP的区别:LIKE在没有通配符的情况下,匹配的是整个列的内容是否相同;而REGEXP则是匹配的文本是否在列值中出现。

MySQL中的正则表达式匹配不区分大小写,如需区分,可使用BINARY关键字。

^的双重用途:^有两种用法,在集合中(用[和]定义),用它来否定集合。否则,用来指串的开始处。通过^开始每个表达式,用$结束每个表达式,可以使REGEXP起到和LIKE相同的作用。

本章语句:

# 基本字符匹配

SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;

# 使用.匹配任意一个字符

SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;

# 区分大小写

SELECT prod_name FROM products WHERE prod_name REGEXP BINARY 'Jet' ORDER BY prod_name;

# 使用|进行OR匹配

SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;

# 使用[]字符集合匹配一组字符

SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;

# 错误的匹配,这等于匹配 1 或者 2 或者 3 Ton

SELECT prod_name FROM products WHERE prod_name REGEXP '1|2|3 Ton' ORDER BY prod_name;

# 否定字符集合

SELECT prod_name FROM products WHERE prod_name REGEXP '[^123] Ton' ORDER BY prod_name;

# 匹配范围

SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;

# 匹配特殊字符(在特殊字符前加双斜杠(\\))

SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;

# 匹配字符类(预定义的字符集)

# 任意字母或者数字

SELECT vend_name FROM vendors WHERE vend_name REGEXP '[[:alnum:]]' ORDER BY vend_name;

#任意字符

SELECT vend_name FROM vendors WHERE vend_name REGEXP '[[:alpha:]]' ORDER BY vend_name;

#任意数字

SELECT vend_name FROM vendors WHERE vend_name REGEXP '[[:digit:]]' ORDER BY vend_name;

# 使用重复元字符匹配多个实例

SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name;

# 匹配连在一起的4位数字

SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name;

# 使用定位符匹配以数字或者.开头的行

SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;

# 简单的正则表达式测试

SELECT 'hello1' REGEXP '[0-9]';

本章图表:表9.1 空白元字符表9.2 字符类表9.3 重复元字符表9.4 定位元字符

字段:基本上与列的意思相同,字段与列经常互换使用,不过数据库列一般称为列,而字段通常用在计算字段的连接上。

计算字段:储存在表中的数据不都是计算机应用程序所需要的,我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。这就是计算字段发挥作用的所在了。计算字段并不实际存在于数据库表中,计算字段是在运行时在SELECT语句内创建的。

拼接:将值联结到一起构成单个值。

在MySQL中的SELECT 语句中,可以使用Concat()函数来拼接两个列。

MySQL使用RTrim()函数来删除数据右侧多余的空格,LTrim()去掉串左边的空格,Trim()则去掉串左右两侧的空格。

别名:一个字段或值的替换名,用AS关键字赋予。

本章语句:

# 使用concat()函数拼接列(不使用别名)

SELECT CONCAT(vend_name, ' (', vend_country, ')') FROM vendors ORDER BY vend_name;

# 使用别名

SELECT CONCAT(vend_name, ' (', vend_country, ')') AS vend_title FROM vendors ORDER BY vend_name;

# 使用RTRIM()函数来删除字段右边的空格

SELECT CONCAT(RTRIM(vend_name), '(', RTRIM(vend_country), ')') AS vend_title FROM vendors ORDER BY vend_name;

# 执行算术计算

# 查询指定订单号的物品项并计算每项的总价

SELECT

prod_id,

quantity,

item_price,

quantity * item_price AS expanded_price

FROM

orderitems

WHERE

order_num = 20005;

# 如何测试计算

SELECT 3 * 2; #返回6

SELECT TRIM('abc'); #返回abc

SELECT NOW(); #返回当前日期和时间

本章图表:图10.1 MySQL算术操作符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值