`

SQL基础总结(四):操作符和函数

 
阅读更多

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)

--------------------------------

派生列是一个计算结果。派生列不会成为表中的永久列,他们用于显示或者报表目的。

 

包含空值的任何算数运算的结果是空值。

 

在算术表达式中使用多种数字数据类型。DBMS将把所有数字转换为表达式中最复杂操作数的数据类型,并以这种类型返回结果,这个转换过程称为提升。如一个整数和一个浮点数相加,DBMS将整数转换为浮点数,然后进行数字加法,以浮点数形式返回结果。

 

有时DBMS强制数学封闭,因此一个整数除以一个整数时一定要仔细,结果可能是整数(根据DBMS而定)。

 

使用操作符||组合(连接)串。

连接串与非串时,DBMS如不能隐式转换类型,必须将非串转换为串。

包含空值的连接运算结果为空值,如’a’||null||’b’等于null。但Oracle例外(Oracle将空值当作空串处理)。

 

可以连接十六进制和二进制串:B’0100’||B’1011’等于B’01001011’

可以使用TRIM()函数从连接的串中删除不需要的空格。

CONCAT()接受任何参数并在必要时将非串转换为串(CAST则不是必须的)。OracleDB2也支持CONCAT()函数。

 

使用函数SUBSTRING()提取串的一部分。

SUBSTRING(string FROM start [FOR length])

空串的子串是空串。

例:SUBSTRING(‘abc01’ FROM 1 FOR 3) -- ‘abc’

SUBSTRING(‘abc01’ FROM 4) -- ‘01’  省略FOR时一直到串末尾

可以从十六进制或二进制中提取子串:

SUBSTRING(B’01001011’ FROM 5 FOR 4)  -- B’1011’

OracleDB2中子串函数是SUBSTR(string,start [,length]).

Oracle将空值作为空串处理:SUBSTR(NULL,1,2)返回’’.

 

使用函数UPPER()将返回小写字母转换为大写字母。使用函数LOWER()返回将大写字母转换为小写字母的串。大小写的更改只对字母起作用,数字、标点、和空格不会更改。

 

使用TRIM()删除串两端不需要的字符。可以修整前导字符、尾随字符、或者都修整。默认情况下修整空格。定义LEADING删除前导空格,定义TRAILING删除尾随空格。定义BOTH同时删除前导和尾随空格。

例:TRIM(LEADING FROM ‘   ABC   ’)  --  ‘ABC   ’;

TRIM(TRAILING FROM ‘   ABC   ’)  --  ‘   ABC’;

TRIM(BOTH FROM ‘   ABC   ’)  -- ‘ABC’;

如果不指定,默认为BOTH

DB2中,用于修整前导空格的修整函数是LTRIM(string),修整尾随空格的是RTRIM(string)。函数CHARACTER_LENGTH()返回串中字符的个数。

 

BIT_LENGTH(expr):返回表达式中位的个数,BIT_LENGTH(B’01001011’)返回8

OCTET_LENGTH(expr):返回表达式中的字节个数,OCTET_LENGTH(B’10001101’)返回1OCTET_LENGTH(‘ABC’)

位统计和字节统计函数因DBMS而异。

 

函数POSITION()在给定串中定位一个特定子串。返回在串中子串第一次出现的起始位置。

串中不含有子串,POSITION将返回0。串比较是否区分大小写依赖于DBMS

POSITION(‘ef’ IN ‘abcdef’)  -- 返回5

 

SQL标准定义了函数OVERLAY以替换子串。

OVERLAY(‘AxxxEFG’ PLACING ‘bcd’ FROM 2 FOR 3) – 返回’AbcdEFG’

 

函数EXTACT()将日期或时间间隔隔为单一的字段,并以数字形式返回。

EXTACT(field FROM date_or_time)

FieldYEARMONTHDAYHOURMINUTESECONDTIMEZONE_HOURTIMEZONE_MINUTE

EXTACT(YEAR FROM DATE ‘2011-01-12’) 返回数字2011

 

CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP从计算机系统时钟上获得当前日期和时间。

 

CURRENT_TIMECURRENT_TIMESTAMP都可以接受精度参数,CURRENT_TIME(6)返回SECOND字段中有6位数字精度的当前时间。

 

使用函数CURRENT_USER标识数据库服务器中的活动用户。

 

函数CAST()将一种数据类型的表达式转换为另一种数据类型。

CAST(expr AS data_type)

如果浮点数超出DBMS允许的SMALLINT值的范围,将FLOAT转换为SMALLINT将会失败。从DATETIMESTAMP转换中,结果中的时间部分可能是00:00:00

 

使用CASE计算条件值

CASE有两种格式:简单格式和搜索格式。

简单格式

SELECT price,

type,

CASE type   --type为条件

  WHEN ‘A’ THEN price*1.1  --type值为A时,查询price*1.1

                WHEN ‘B’THEN price*0.1  --type值为B时,查询price*0.1

  ELSE price   --没有匹配则返回默认值price

END   --注意CASEEND结尾

FROM titles

如果没有ELSE子句,默认ELSE NULL

 

搜索格式

SELECT price,

type,

CASE

  WHEN type= ‘A’ THEN price*1.1  --type值为A时,查询price*1.1

                WHEN type= ‘B’THEN price*0.1  --type值为B时,查询price*0.1

  WHEN type> ‘C’THEN price*1.2  --type值大于C时,查询price*1.2

                ELSE price  --没有匹配则返回默认值price

END  --注意CASEEND结尾

FROM titles

 

当返回结果后,CASE可能计算剩余WHEN子句中的表达式,也可能不计算,这依赖于DBMS

可以在SELECTWHEREORDER BY子句中或任何允许使用表达式的位置,使用CASE

 

使用COALESCE()检查空值

通常被用于在结果中用特定值替代空值的显示,是搜索CASE的一般形式缩写。

COALESCE(expr1,expr2)

所有表达式需要是一样的类型,或者隐式转换为一样的类型。如果表达式1和表达式2都为空值,则COALESCE()返回空值。

例:COALESCE(state,’N/A’) 如果state为空,则返回’N/A’

 

可以从不可以为空列中得到空值:

SELECT max(ID)  --ID列不能为空

FROM titles

WHERE au_name=’no this line’

 

使用NULLIF()比较表达式

函数NULLIF()比较两个表达式,如果相等则返回空值,如果不等则返回第一个表达式:

NULL(expr1,expr2)

用于转换用户定义的不适用的值为空值。

例:SELECT males,females, males/NULLIF(females,0) AS ratio

FROM school_club

females0时,因为0不能做除数,所以转换为NULL。任何数除以NULL都得NULL
分享到:
评论

相关推荐

    数据库应用(SQL Server):11 操作符和函数.ppt

    数学操作符和函数: 在SQL Server中,数学操作符和函数可以对数字进行各种操作。例如: * 数学操作符+:用于将两个数字相加,例如:SELECT 100 + 50; * 数学操作符-:用于将两个数字相减,例如:SELECT 100 - 50; * ...

    SQL操作符和函数

    ### SQL操作符与函数详解 #### 一、SQL语法基础 **SQL**(Structured Query Language)是一种专门用于管理和处理关系型数据库的语言。它不仅用于检索数据,还支持数据更新、插入和删除等多种操作。 ##### 1. 数据库...

    SQLServer和Oracle常用函数对比

    - **SQLServer**: 使用`+`操作符。 ```sql SELECT '11' + '22' + '33' AS Value; ``` - **Oracle**: 使用`CONCAT()`函数。 ```sql SELECT CONCAT('11', '22', '33') AS Value FROM DUAL; ``` **24. 查找子串...

    第九章-操作符及sql函数.ppt

    本章的目标是深入理解和熟练应用SQL操作符和函数。操作符主要包括算术、比较、逻辑、集合和连接这五类。算术操作符如加、减、乘、除,常用于对数值进行计算。例如,可以增加或减少某个字段的值,或者调整成绩的...

    操作符及sql函数PPT学习教案.pptx

    本教程的目标是使学习者掌握SQL操作符和函数的使用。操作符主要包括: 1. **算术操作符**:如+(加)、-(减)、*(乘)、/(除),用于数值计算。例如,可以增加或减少学生分数,或者计算平均分。 2. **比较操作...

    SQL查询和SQL函数.pptx

    3. **SQL操作符的优先级**: - 从高到低依次为:算术操作符 > 连接操作符 > 比较操作符 > NOT逻辑操作符 > AND逻辑操作符 > OR逻辑操作符。 4. **SQL函数**: - **单行函数**:针对每一行数据返回一个单一值,如...

    操作符及sql函数PPT课件.pptx

    【SQL操作符与函数详解】 SQL(Structured Query Language)是一种标准的数据库查询语言,用于管理和处理关系型数据库。本课件主要围绕SQL的操作符和函数展开,帮助学习者掌握其核心概念并能熟练运用。 首先,SQL...

    mysql8内置函数和操作符.sql

    mysql8内置函数和操作符.sql

    SQL函数大总结_实用的SQL函数

    SQL函数大总结 实用的sql函数 ABS(x) 函数,此函数用来返回一个数的绝对值。 ACOS(x)函数,返回X的反余弦值。X范围从1到-1,输入值从0到派,以弧度为单位。 ASIN(x)函数,返回X的反正弦值。X范围从1到-1,输入值从-...

    oracl常用函数与sql函数对比

    在IT领域,尤其是在数据库管理与...以上总结了Oracle与SQL Server中常用函数的对比及用法,可以看出两者在函数名称和语法上有一定的差异,但在功能上大多相似。理解这些差异有助于在跨平台开发和迁移时更加得心应手。

    sqlserver自定义函数

    以上这些自定义函数和操作展示了SQL Server中函数的强大功能,它们可以方便地进行日期处理、字符串操作、数据统计等任务,提高数据库查询和管理的效率。在实际工作中,开发人员可以根据需求创建类似的函数,以满足...

    操作符及sql函数学习教案.pptx

    操作符及sql函数学习教案.pptx

    sqlserver 函数大全

    SQL Server 函数大全是 SQL Server 中一个强大的功能,提供了多种函数来处理和操作数据。这些函数可以分为多个类别,包括聚合函数、配置函数、转换函数、加密函数、游标函数、日期和时间函数、数学函数、元数据函数...

    sql内置函数

    SQL中的日期时间处理函数主要用于获取和操作日期时间数据。 ##### 1. 日期转换函数 - **`CAST()`**:此函数用于将一个表达式的值转换为指定的数据类型。 - **示例**: ```sql SELECT CAST(GETDATE() AS VARCHAR...

    SQL语句之基础语法汇总

    * SQL语句的操作符:=、、AND、OR、NOT等 四、SQL语句的应用 * sorting和分组操作:使用ORDER BY和GROUP BY语句对数据进行排序和分组 * filtering操作:使用WHERE语句对数据进行过滤 * aggregation操作:使用SUM、...

    Oracle_Sql_中常用字符串处理函数

    Oracle Sql 提供了两个大小写转换函数:UPPER() 和 LOWER()。UPPER() 函数将字符串转换为大写,而 LOWER() 函数将字符串转换为小写。 示例:SELECT UPPER('abcd') FROM dual; -- 返回 ABCD SELECT LOWER('ABCD') ...

    oracle 和sql Server 函数对比

    - SQL Server使用`CONCAT`函数,Oracle使用`||`操作符。 - 示例:SQL Server中`SELECT CONCAT('11', '22', '33')`;Oracle中`SELECT '11' || '22' || '33' FROM DUAL`。 25. **子字符串定位** - SQL Server使用`...

Global site tag (gtag.js) - Google Analytics