Oracle语法函数+小功能语法
1.语法
1.1.decode函数
-
语法
decode(条件,值1,返回值a,值2,返回值b,...值n,返回值n,缺省值)
-
含义
若条件=值1,则
返回值a
若条件=值2,则
返回值b
……
若条件!=值1,也!=值2,则
返回缺省值(也可以说默认值) -
3.decode函数是Oracle数据库独有的
1.2.abs()函数
abs函数返回的值就是绝对值
1.3.row_number函数
-
1.语法
row_number() over(partition by 列名1 order by 列名2 )的使用 -
2.含义
表示根据列名1分组,然后在分组内部根据列名2排序,并生成一个名为row_number的列,该列的值就表示每组内部排序(默认升序排序)后的顺序编号,可以用于去重复值 -
3.事例
- 3.1 sql语句
SELECT name,age,detail,ROW_NUMBER() OVER(PARTITION BY name ORDER BY age DESC) FROM TEST_Y;
- 3.1 sql语句
- 注 这里的ROW_NUMBER()可以定义别名,
例如row_number==() over(partition by 列名1 order by 列名2 desc) as row
这里as可以省略
- 这里的去重就是因为row_number会把重复的数据按1、2、3、4……的顺序进行排序,定义别名row后通过
where row = 1
就可以进行去重了
1.4.TRANSLATE函数
- 1.语法:TRANSLATE(char, from, to)
- 2.用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。
三个参数中有一个是空或者为null,返回值也将是空值。 - 3.例子:
select translate('abcde','agb','333') from dual
结果:3b3de
字符串’abcde’ 中有’agb’的a和b,所以to中的首尾字符有效(from的a(0)g(1)b(2),to的3(0)3(1)3(2)),而没有的自然不替换
select translate('abcde','ae','343') from dual
结果:3bcd4
将a跟e替换成3与4(from的a(0)e(1),to的3(0)4(1)3(2))
select translate('abcde','ace','3') from dual
结果:3bd
将a替换成3(from的a(0)c(1)e(2),to的3(0)),然后ce因为跟to的字符长度对应不上,所以去除
1.5.REPLACE函数
- 1.语法
Replace (Expression, Find, ReplaceWith [, Start] [, Count] [, Compare])
- 2.例子
select replace('abcde','abc','343') from dual
结果:343de
select replace('abcde','a','343') from dual
结果:343bcde
select replace('abcde','a') from dual
结果:bcde
select replace('abcde','sss','343') from dual
结果:abcde
select replace('abcde','as','34') from dual
结果:abcde
1.6 NVL()函数
- 1.语法
nvl(Expression1,Expression2)
若Expression1
为 null 值,则返回Expression2
,
否则返回Expression1
- 2.例子
select nvl('字段A','0') from dual
若字段为null则
结果:0
2.功能操作
2.1.删除一张表中的某个列
ALTER TABLE 表名 DROP COLUMN 列名