SQL学习笔记3 通配符 计算字段 函数 汇总
2018-03-03 15:57
549 查看
LIKE操作符
在搜索子句中使用通配符来匹配字符串,必须使用LIKE操作符,且只能用于文本字段(字符串)的匹配
百分号(%)通配符
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'Fish%';
%表示任意字符出现任意次数(可以是0次),其可以在搜索模式中任意位置使用,并可使用多个
Access需要使用
*而不是
%
%不会匹配NULL值的行
下划线(_)通配符
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '_ inch teddy bear';
DB2不支持该通配符,Access需要使用
?而不是
_
匹配单个字符
方括号([ ])通配符
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '[JM]%';
用来指定一个字符集,必须匹配其中一个字符
只有Access 和 SQL server支持该通配符
可以用前缀 ^ 来否定,Access使用 !来否定
创建计算字段
计算字段:在SELECT语句内创建的字段
拼接字段
SELECT vend_name + '(' + vend_country + ')' FROM vendors;
使用
+来拼接字段,Access 和 SQL server 支持
SELECT vend_name || '(' || vend_country || ')' FROM vendors;
使用
||来拼接字段,DB2 、Oracle、PostgreSQL、SQLite 和 Open Office Base 支持
SELECT Concat(vend_name , '(' , vend_country , ')') FROM vendors;
使用Concat函数来拼接字段,MySQL 和 MariaDB 支持
使用别名
SELECT vend_name + '(' + vend_country + ')' AS vend_title FROM vendors;
别名是一个字段或值的替换名,用关键字
AS赋予
当实际的表列名包含不合法的字符或容易混淆时,可以使用别名
别名有时也叫导出列(derived column)
执行算术计算
SELECT prod_id, quantity, item_price, quantity * item_price AS expanded_price FROM orderitems WHERE order_num = 20008;
可以使用加(+)减(-)乘(*)除(/)来创建计算字段,圆括号可以用来区分优先顺序
函数
不同数据库软件的函数名称和语法可能极其不同文本处理函数
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM vendors
常用的文本处理函数
LEFT(ARG,N)、
RIGHT(ARG,N)返回字符串左边或右边N个字符
LENGTH()返回字符串的长度,也使用
DATALENGTH()或
LEN()
LOWER()、
UPPER()将字符串转换为小写和大写,Access使用
LCASE()和
UCASE
TRIM()、
RTRIM()、
LTRM()去掉字符串两边、右边、左边的空格
SOUNDEX()描述其语音表示的字母数学模式算法,可用于模糊匹配,Access和PostgreSQL不支持
SELECT cust_name,cust_contact FROM customers WHERE SOUNDEX(cust_name) = SOUNDEX('Michael Green');
日期和时间处理函数
SELECT order_num FROM orders WHERE DATEPART('yyyy',order_date);
SQL server 和 Access支持
SELECT order_num FROM orders WHERE YEAR(order_date) = 2012;
MySQL 和 MariaDB支持
SELECT order_num FROM orders WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31-2012')
Oracle可以结合使用
BETWEEN和
to_date函数限制日期时间
数值处理函数
数值处理函数在不同的数据库软件中较为一致
汇总数据
AVG()求得列的平均值
SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 'DLL01';
AVG()只能用于确定特定数值列的平均值,且列名必须作为函数参数
会忽略NULL值行
COUNT()
确定表中行的数目或符合特定条件的行的数目
SELECT COUNT(*) AS num_cust FROM customers;
统计所有行时,将包含NULL行,而统计特定条件下的行时,不会包含NULL行
MAX()和 MIN()
找出指定列中的最大值和最小值(数值或日期),当用于文本数据时,返回该列排序后的最后一行和最前面一行
SELECT MAX(prod_price) AS max_price FROM products;
都会忽略NULL行
SUM()
返回指定列值的和
SELECT SUM(quantity * item_price) AS total_price FROM orderitems; WHERE order_num = 20005;
利用算术操作符,所有聚集函数都可执行多个列上的计算
使用 DISTINCT 聚集不同的值(Access不支持)
主要用于
AVG()和
SUM()函数
SELECT AVG( DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 'DLL01';
相关文章推荐
- 关于mysql的sql语句的汇总(学习笔记)02 (三个字段查询)
- PL/SQL学习笔记-常用函数
- SQL Server 2005 T-SQL 学习笔记:排名函数
- 学习51笔记与一份从网上找的资料:单片机C语言中_nop_函数的使用及C语言的延时计算2010-
- SQL基本函数学习笔记(order by decode)
- sql之stuff函数学习笔记
- PL/SQL学习笔记-函数
- 黑马程序员--学习笔记之SQL基础语句及函数
- openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)
- SQL 7 计算字段 - 3. 数据处理函数
- openerp学习笔记 计算字段支持搜索
- sql学习创建计算字段
- 黑马程序员之SQL学习笔记: SQL排列函数
- PL/SQL学习笔记[3]-常用函数
- SQL Server 2005 T-SQL 学习笔记:排名函数
- Oracle SQL学习笔记 之 GROUP函数与GROUP BY子句
- what's in string? c语言string类函数实现汇总 觉得都是学习使用指针的好例子(算是读书摘抄和笔记吧)
- SQL学习笔记一之COALESCE函数
- linux下用函数和系统调用分别实现计算文件长度(不解) 学习笔记
- SQL学习笔记之二:QUOTENAME函数