【数据库】单行查询的一些函数

这篇博客详细介绍了SQL中的单行查询函数,包括字符函数如LOWER(), UPPER(), TRIM(),数字函数如ROUND(),类型转换函数date_format()和str_to_date(),以及通用函数如IFNULL()和CASE...WHEN...END。通过示例展示了如何在数据库查询中应用这些函数,例如进行字符串处理、四舍五入、日期计算和条件判断等。" 127283932,8208577,使用div contenteditable创建自定义前端组件,"['前端开发', 'Vue.js', 'JavaScript', 'HTML特性']

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

一、字符函数

LOWER()   字符小写

UPPER()   字符大写

TRIM()    去除指定字符

            

使用trim函数将字符串‘hello’、‘  Hello ’、‘bllb’、‘hello    ’分别处理得到下列字符串ello、Hello、ll、hello。

 

SELECT TRIM('h' FROM 'hello') FROM DUAL;

SELECT TRIM(' Hello ') FROM DUAL;

SELECT TRIM(BOTH 'b' FROM 'bllb') FROM DUAL;

SELECT TRIM(BOTH ' ' FROM ' hello    ') FROM DUAL


INSTR()   select INSTR(name,'t'),name from aa;   显示字符 name 中 t 字符 第一次出现的位置(mysql 没有此方法,Oracle中可以用)

REPALCE()   替换   select REPLACE(name,'t','b') from aa;     将字符中的t 用 b 替换

SUBSTR()   截取

CONCAT()   连接字符串

LENGTH()   获得字符串长度


二、数字函数

1.ceil () 向上取整

   例: SELECT CEIL(4.3) = 5

2.floor () 向下取整
    例 :SELECT FLOOR(4.3) = 4

3.round() 四舍五入

   例:SELECT round( 1.2, 0 ) = 1

          SELECT  round(1.5 , 0 ) = 2

          SELECT  round( 1.5 ) = 2


三、类型转换

date_format(date,'%Y-%m-%d')   

-------------->oracle中的to_char();

str_to_date(date,'%Y-%m-%d')    

-------------->oracle中的to_date();

日期函数

SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02")  ; -- 截取日期


计算2000年1月1日到现在有多少月,多少周(四舍五入)。

select timestampdiff(MONTH,'20000101', now())  FROM DUAL;

selectROUND(DATEDIFF(now(),'2000-01-01')/7) FROM DUAL;



四、通用

select CONCAT('\_',name),name from aa ;  -- 转移字符 ecaspe()

select IFNULL(name1,0)  from aa ;-- 如果name1不是NULL,IFNULL()返回name1,否则它返回0。

.            查询员工的last_name及其经理(manager_id),要求对于没有经理的显示“NoManager”字符串。

            SELECT last_name,IFNULL(manager_id,'No Mananger')from employees2;

select IF(name1,'-','--')  fromaa ; -- 如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。


替换命令

语法 CASE expr

     WHEN comparison_expr1  THEN return_expr1   

     WHEN comparison_expr2 THEN return_expr2    

     WHEN comparison_exprn  THEN return_exprn

     ELSE else_expr

     END


单个值的替换

SELECT

CASE name

   WHEN 'a' THEN 'one'

   WHEN '1a' THEN'two'

   ELSE 'more' END  shuilv,name

   from aa;  -- 状态

 

有表达式的替换

SELECT

CASE

 WHEN sale<1000 THEN '0'

WHEN 1000<=sale and sale <2000THEN '10'

WHEN 2000<=sale and sale<3000  THEN '15'

ELSE '--' END shuilv,sale,name

from aa; --

 

FROM  DUAL;   注:dual 是临时虚拟表,只用于查询函数


在employees表中查询出员工的工资,并计算应交税款:如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于等于3000,税率为20%。

SELECT last_name,salary,

      (CASE FLOOR (salary/1000)

      WHEN 0 THEN salary*0

      WHEN 1 THEN salary*0.1

      WHEN 2 THEN salary*0.15

      ELSE salary*0.2

      END) tax

      FROM employees2;


                



 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值