数据库基础06——函数

本文深入讲解数据库中的各类函数,包括字符、算术、转换及日期函数,覆盖Oracle、MySQL及SQL Server等主流数据库系统的实现差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库基础06——函数

1、字符函数

字符函数主要用于对字段里的字符串或值进行比较、 连接、 搜索、 提取片断等

1.1串接函数

DBMS函数说明
Oracle|| 如:‘john’||‘son’
MySQLCONCAT() 如: CONCAT(‘john’,‘son’)
SQL Server+ 如:‘john’+‘son’

其实MySQL 和Oracle 中都有串接函数,作用和SQL Server中的+号 和Oracle中的 ||号作用一样。区别在于,Oracle中的串接函数只能用于两个字符串,而MySQL中的CONCAT可以连接多个字符串。

注意:如果要串接数字,就需要将数字首先转换为字符串。

1.2 REPLACE函数

REPLACE函数用于把某个字符或字符串替换为指定的一个字符(或多个字符) , 其使用类似于TRANSLATE函数, 只是它是把一个字符或字符串替换到另一个字符串里 ;

SELECT REPLACE(FIRST_NAME,'T','B') FROM EMPLOYEE_TBL --把所有的T 替换为B
--Microsoft SQL Server、 MySQL和Oracle全都支持。 

1.3 UPPER函数

把字符串里的小写字母转化为大写

SELECT UPPER(CITY) FROM EMPOYEE_TBL;-- 把查出的city 大写
--Microsoft SQL Server、 MySQL和Oracle全都支持。 

1.4 LOWER函数

把字符串里的大写字母转化为小写

SELECT LOWER(CITY) FROM EMPLOYEE_TBL;-- 把查出的city 转换为小写
--Microsoft SQL Server、 MySQL和Oracle全都支持。 

1.5 SUBSTR:

获取字符串子串,但是各个DBMS实现方式不同

--Oracle
	SUBSTR(列名,位置,长度)-- 即,从第几个开始,长度为几;位置为1的话就从第一个开始
--SQLServer 和 MySQL 
	SUBSTRING(列名,位置,长度) --除了函数名不同,其他一样
--例如:
SELECT SUBSTRING(EMP_ID,1,3) FROM EMPLOYEE_TBL; --返回EMO_ID 的前3个字符

1.6 INSTR

INSTR函数用于在字符串里寻找指定的字符集, 返回其所在的位置

INSTR(列名, '字符串');
--比如:
SELECT INSTR(STATE,'I') FROM EMPLOYEE_TBL;--返回每个州名里字母I 从第一个开始算,字母出现的位置。

1.7 LTRIM

LTRIM函数是另一种截取部分字符串的方式 ,从左边检出字符串中的字符,常用来去除空格,语法如下:

SELECT LTRIM(列名) FROM 表名 WHERE 条件
-- 有的数据库管理系统是可以去除 左边的字符串。
--mysql中好像只能去除空格,不能加参数

1.8 RTRIM

同LTRIM一样的用法,就是去除字符串右边的空格。

1.9 LENGTH

LENGTH函数是很常见的, 用于得到字符串、 数字、 日期或表达式的长度, 单位是字节

SELECT PROD_DESC,LENGTH(PROD_DESC) FROM PRODUCETS_TBL; --返回产品描述几长度
LENGTH(CHARACTER STRING)-- 这是语法
--MySQL和Oracle都支持该函数。 而Microsoft SQL Server则使用LEN函数来实现相同的功能

1.10 IFNULL(检查NULL 值)

IFNULL函数用于在一个表达式是NULL时从另一个表达式获得值。 它可以用于大多数数据类型, 但值与替代值必须是同一数据类型

IFNULL('值','替换值')SELECT PAGER,IFNULL(PAGER,9999999999) FROM EMPOYEE_TBL;
/*只有NULL值被替换为 999 999 999。
只有MySQL支持该函数。 要实现相同的功能, Microsoft SQL Server使用 ISNULL函数, 而Oracle则使用
COALESCE函数。*/

1.11 COALESCE

COALESCE函数也是用指定值替代NULL值, 这一点与IFNULL是一样的。 其不同点在于, 它可以接受一个数据集, 依次检查其中每一个值, 直到发现一个非NULL值。 如果没有找到非NULL值, 它会返回一个NULL值。

SELECT COALESCE(A字段,B字段,C字段) FROM EMPLOYEE;--这只是个例子,表示返回employee表中a,b,c三个字段中的第一个非null值。
SELECT COALESCE(NULL, NULL, 1); -- Return 1 
SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); -- Return 1 
--如果传入的参数所有都是null,则返回null,比如 
SELECT COALESCE(NULL, NULL, NULL, NULL); -- Return NULL 
--所以同样可以用来对null值进行判断并且替换。

1.12 LPAD 函数

LPAD(左填充) 用于在字符串左侧添加字符或空格, 其语法如下所示:

MySQL和Oracle全都支持该函数。 遗憾的是, Microsoft SQL Server中没有对应的函数。

LPAD(string, padded_length, [ pad_string ] )
--string:要被填充的字符串,padded_length:填充之后字符串长度。也就是函数返回的字符串长度,如果这个数量比源字符串短,就会把字符串截取
--pad_string:填充字符串,是个可选参数,这个字符串要粘贴到string的左边,如果这个参数未写,就会粘贴空格
--例如:
SELECT LPAD(PROD_DESC,30,'.') PRODUCT FROM PRODUCTS_TBL;
--就会再每个产品描述左侧加上'.',总长度30个字符

1.13 RPAD 函数

同LPAD函数,使用相同,不同的是右填充,在字符串右侧添加字符或空格。

MySQL和Oracle全都支持该函数。 遗憾的是, Microsoft SQL Server中没有对应的函数。

1.14 ASCII 函数

ASCII函数返回字符串最左侧字符的“美国信息交换标准码(ASCII),Microsoft SQL Server、 MySQL和Oracle全都支持该函数。

ASSCII('A') --返回65
ASSCII(‘B’) --返回66

2、算术函数

函数说明
ABS()返回一个绝对值
ROUND()四舍五入
SQRT()平方根
SIGN()符号-1,0,1,如select sign(-6),sign(0),sign(34); 判断正负
POW(x,y)/POWER(x,y)幂函数,power(2,3) 计算2的3次方
CEIL() 和FLOOR()上限和下限,比如1.55 下限1上限2,相当于取整;ceiling ==ceil
EXP(n)返回e的n次方。 e (2.718281…) 是自然对数的底数。
LOG(n)默认情况下,LOG() 返回自然对数。自然对数是底数为 e 的对数
LOG( EXP( n ) ) = n。
LOG10(n)返回n以10为底的对数。即10的多少次方是N
SIN()返回一个角度的正弦
COS()返回一个角度的余弦
TAN()返回一个角度的正切
PI()圆周率
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列之和

使用方式都是 FUNCTION(EXPRESSION) 直接用,并且Microsoft SQL Server、 MySQL和Oracle都支持所有的算数函数 。

注意:聚合函数不统计null值

3、转换函数

字符到数字;数字到字符;字符到日期;日期到字符。

Cast函数;CONVERT函数。

用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name).

`SELECT` `CONVERT``(``'abc'` `USING utf8);`

将varchar 转为Int 用 cast(str as unsigned) str为varchar类型的字符串 。

比如常用的百分比转换:

`select` `cast((1/3)*100 ``as` `UNSIGNED) ``as` `percent ``from` `dual;`

MySQL类型转换函数参数 : CAST(xxx AS 类型) , CONVERT(xxx,类型)

这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

整数 : SIGNED
无符号整数 : UNSIGNED
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL

4、日期函数

4.1获取当前日期

数据库系统函数说明
Microsoft SQL ServerGETDATE() 函数
MySQLNOW() 函数
OracleSYSDATE() 函数

4.2 其他日期函数

DBMS日期函数用途
SQL ServerDATEPART返回日期的某个元素整数值
DATENAME返回日期的某个元素的文本值
GETDATE()返回系统日期
DATEDIFF返回两个日期之间由指定日期元素表示的间隔,
比如天数、分钟数和秒数
OracleNEXT_DAT返回指定日期滞后的下一天
MONTHS_BETWEEN返回两个日期之间相差的月数
MySQLDAYNAME(date)显示星期几
DAYOFMONTH(date)显示几日
DAYOFWEEK(date)显示星期几
DAYOFYEAR(da’te)显示一年中的第几天

小结:不同的数据库管理系统,函数的实现并不是一致的,具体的使用函数名和使用方式要看具体的数据库系统,我们使用的时候知道有这么个函数就行,根据公司使用的数据库系统,去查相应的文档,用的多了就记住了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值