SQL字段处理 || 字符函数 || 转换函数 || DECODE NVL
CREATE TABLE RM 创建表RM
ALTER TABLE RM ADD(ID VARCHAR(20),AGE VARCHAR(20),SALARY VARCHAR(20)) 增加三个字段 varchar(20):可变长度字符串 最大长度为20
ALTER TABLE RM RENAME COLUMN AGE TO WEIGHT 把AGE字段改为WEIGHT
ALTER TABLE RM DROP COLUMN WEIGHT 把WEIGHT字段删除
ALTER TABLE RM RENAME TO DM 把表名RM改为DM
DROP TABLE DM 删除表(表结构和所有记录)
TRUNCATE TABLE DM 删除所有记录保留表结构
_________________________________________________________________________
字符函数
select initcap(name) from temp 让表temp中name字段的所有记录首字母大写
select concat('a','b') from dual = select 'a'||'b' from dual 字符串连接 'ab'
select substr('20161109',1,4)from dual 从第1位开始截4位 '2016'
select substr('abcde',length('abcde')-3) from dual 从第5-3位截到最后 'bcde'
select substr('abcde',-3,3) from dual 从倒数第3位截到第3位 'c'
substr 0号索引和1号索引都是指第一个位置
select replace(name,'L','N') 将name字段对应记录里的所有'L'变为'N'
select instr('HELLO WORLD','OR') from dual 得到字符串‘OR’首字母O对应的位置 8
select lpad('smith',10,'*') from dual 左填充成10位 '*****smith'
select rpad('smith',10,'*') from dual 右填充成10位 'smith*****'
select trim(' LR ') from dual 去除首尾空格 'LR'
____________________________________________________________________
转换函数
select to_char(sysdate,'yyyy') from dual '2016'
select to_char(sysdate,'yyyymmdd') from dual '20161109'
select to_char(sysdate,'yyyy-mm-dd') from dual '2016-11-09'
select to_number('13') + to_number('14') from dual 27
select to_date('20161109','yyyymmdd') from dual 2016/11/9
______________________________________________________________________
DECODE
NVL
1.现表temp有两个字段month_id和sale,若sale=1000时翻译为D,=2000时翻译为C,=3000时翻译为B,=4000时翻译为A,其他值翻译为Other。SQL如下:
Select month_id , decode (sale,1000,'D',2000,'C',3000,'B',4000,'A',’Other’) sale from temp
2.Select month_id ,decode(sale, null,‘---’,sale) sale from temp
字段sale为null时返回---,不为null时返回本身。
3. nvl(expr1,expr2) expr1为空返回expr2,不为空返回本身。 去除表中null
= decode (expr1,null,expr2,expr1)
decode(expr1,0,null,expr1) expr1为0时返回null,否则返回本身。 将表中0置为null
insert into sg_t_y_osciga_prodlet_o select * from sg_t_y_osciga_prodlet_o_bak 同库同表结构记录全部导入
浙公网安备 33010602011771号