1.`A`标识符无效,表示此字段在表中不存在
表视图不存在代表此表不存在
2. select *from A where name like ’%s_%’escape’s’
escape表示的s 后面的_号不能当做特殊字符处理, 就是查找普通的_号
sql中一般情况_号代表一个字符
3. Upper(’a’) 转化为大些
Lower(’A’)转化为小写
Initcap(’abcd’)将第一个字母变为大写,其他为小写
concat(’a’,’b’)将ab连接在一起
substr(’abcd’,2)从第二个开始切割,得到bcd
length(’ab’)长度 得到2
replace(’abc’,’c’,’b’)将c替换为b得到abb
instr()函数的格式 (俗称:字符查找函数)
格式一:instr( string1, string2 ) // instr(源字符串, 目标字符串) 查找出目标字符串第一次出现位置
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符串, 目标字符串, 起始位置, 匹配序号)
4.NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。
NULLIF函数
NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
CASE gender
WHEN SEX =‘1’ THEN ‘男’
WHEN SEX =‘0’ THEN ‘女’
ELSE ‘其他’ END 性别
gender是表字段 end后的是输出 代替了gender
decode函数与case类型
last_day()函数的用法last_day(time):返回指定日期所在月份的最后一天
select ’Deq’ || initcap(name)from dual
所有名称前面加上Deq并且name中的数据首字母要大写
5.union all因为不需要排除重复行,所以效率相对高些
6.避免select*,oracle会根据数据字典将*转换成所有列,消耗更多时间
7.oracle会将小写转换成大写,尽量使用大写
8.from后面的表 是从右往左查的,应该将数据量最小的表放在右面作为基础表
where条件后是从下往上的,能过滤大量数据的条件放在最下面,表关联语句放在最上面
having应该避免使用,消耗资源
9.连接多个表时,使用表的别名将之作为每列的前缀,这样可以减少解析时间
10.not in 不等于操作符都不会用到索引 判断是否为空也用不到索引
11. A大于2 和A大于等于3是有区别的,前者去找2的索引去比较,后者直接找3