Oracle SQL Lesson (3) - 使用单行函数自定义输出

本文深入探讨了SQL中大小写转换、字符操作、日期处理等核心函数的应用,包括LOWER、UPPER、INITCAP、CONCAT、SUBSTR、LENGTH、INSTR、LPAD、RPAD、REPLACE、TRIM等,同时解释了字符类型(char、varchar2)、日期格式(sysdate、add_months、months_between)以及数字、日期函数的使用技巧。通过实例展示了如何在SQL查询中灵活运用这些函数来处理数据。

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

大小写转换函数
LOWER('SQL Course') = sql course
UPPER('SQL Course') = SQL COURSE
INITCAP('SQL Course') = Sql Course
SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'higgins';

SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'higgins';

任何用户均可以使用dual,用于计算,输出字符串,输出系统日期
select lower('SQL Course') from dual;
select 56+9 from dual;
select sysdate from dual;

字符操作函数
CONCAT('Hello', 'World') = HelloWorld
SUBSTR('HelloWorld',1,5) = Hello
LENGTH('HelloWorld') = 10
INSTR('HelloWorld', 'W') = 6
LPAD(salary,10,'*') = *****24000
RPAD(salary, 10, '*') = 24000*****
REPLACE('JACK and JUE','J','BL') = BLACK and BLUE
TRIM('H' FROM 'HelloWorld') = elloWorld

concat功能不及||强大,仅能连接两列,不能连接字符串
select substr('HelloWorld', 6, 5) from dual;
select substr('HelloWorld', -5, 5) from dual;
第二个参数为负数表示从后往前数
第三个参数不指定表示到结束
conn scott/tiger;
select ename, lpad(ename, 10, '*'),rpad(ename, 10, '*') from emp;
select trim('H' from 'HelloWorld') from dual;
select trim('H' from 'HHHHHHHelloWorldHH') from dual;
select trim('H' from 'HelloHHWorldHH') from dual;

Trim的作用
create table t1(id number, name char(10));
create table t2(id number, name varchar2(10));
insert into t1 values(1, 'a');
insert into t1 values(2, 'b');
insert into t2 values(1, 'a');
insert into t2 values(2, 'b');
select * from t1, t2 where t1.name = t2.name;
select * from t1, t2 where trim(t1.name) = t2.name;

char(n)和varchar2(n)的区别
n代表长度
char固定长度:长度不够n,仍然分配n个字符空间,用空格补齐
varchar2可变长度:根据实际长度分配空间

clob和long的区别: 表中只能有一列为long,建议使用clob
clob:字符长度非常多的
blob:图片,影音

数字函数
ROUND(45.926, 2) = 45.93
ROUND(45.926, -1) = 50
TRUNC(45.926, 2) = 45.92
TRUNC(45.926, -1) = 40
MOD(1600, 300) = 100
MOD(300, 1600) = 300
负数均表示往前数

日期函数
日期在数据库中以数字格式方式存储
The default date display format is DD-MON-RR.
Enables you to store 21st-century dates in the 20th century by specifying only the last two digits of the year
Enables you to store 20th-century dates in the21st century in the same way
RR日期格式
返回离当前年份较近的日期
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
alter session set nls_date_format='DD-MON-RR';
alter session set nls_date_format='dd-mon-rr';
select sysdate from dual;
select sysdate+2 from dual;(天数)
select sysdate+2/24 from dual;(小时)
select hiredate,sysdate,sysdate-hiredate from emp;(天数)

MONTHS_BETWEEN('01-SEP-95','11-JAN-94') = 19.6774194
ADD_MONTHS ('31-JAN-96','1') = '29-FEB-96'
NEXT_DAY ('01-SEP-95','FRIDAY') = '08-SEP-95'
LAST_DAY ('01-FEB-95') = '28-FEB-95'

Assume SYSDATE = '25-JUL-03':
ROUND(SYSDATE,'MONTH') = 01-AUG-03
ROUND(SYSDATE ,'YEAR') = 01-JAN-04

TRUNC(SYSDATE ,'MONTH') = 01-JUL-03
TRUNC(SYSDATE ,'YEAR') = 01-JAN-03

转载于:https://www.cnblogs.com/thlzhf/p/3404076.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值