01、select 3+5 from dual 注:dual表的使用
02、select sysdate from dual 注:获取当前时间, 如:2014/11/25 16:22:52
03、select trunc(sysdate) from dual 注:获取当前日期,如:2014/11/25
04、select to_char(trunc(sysdate), 'yyyy/mm/dd hh24:mi:ss') from dual; 获取当天第一秒, 如:2014/11/25 00:00:00
05、update T_temptable set c_boss = c_boss || 'Hello this is a tail' oracle中, 用||连接字符串, 而不是用 ‘+’
06、select substr(boss, 1, 3) 等价于 select substr(boss, 0, 3) , 1代表第一个位置, 0特殊处理到第一个位置, -1代表倒数第一个, -2代表倒数第二个
exp. substr('123456789', -4, 3) 的值为 ‘678’
07、 小数格式化select to_char(1000.3,'FM999999999990.0099') from dual;
08、查询字段不含英文字母 where UPPER(字段名) = LOWER(字段名)
查询字段只含大写字母 where UPPER(字段名) <> LOWER(字段名) and UPPER(字段名) =字段名
查询字段只含小写字母 where UPPER(字段名) <> LOWER(字段名) and LOWER(字段名) =字段名
查询字段同时包含大小写字母 where UPPER(字段名) <> LOWER(字段名) and UPPER(字段名) <>字段名 and LOWER(字段名) <>字段名
09、update 视图, 要求外键必须unique才能update
alter table EXP_Table modify XXX_ID unique;
10、从SQL导出到Oracle的表,需要带双引号的表名和列名进行重命名处理
ALTER TABLE old_table_name RENAME TO new_table_name;--重命名表
ALTER TABLE [table_name] RENAME COLUMN [column_name] TO [new_column_name];--重命名列
11、PL/SQL 常用函数 链接:http://leeyee.github.io/blog/2011/11/18/plsql-sql-comm-func/
假设表a中有多个字段(province ,city)需要从b表获取(两张表的mobile一样),总结了几种写法。 一、updatea set a.province=(select province from b where b.mobile=a.mobile); updatea set a.city=(select cityfrom b where b.mobile=a.mobile); 这种写法效率太低,尤其是号码有上万条的时候,所以抛弃。 二、update a set a.province=b.province,a.city=b.city from a inner join b on a.mobile=b.mobile. 或者update a set a.province=b.province,a.city=b.city from a,b where a.mobile=b.mobile. 三、update a inner join b on a.mobile=b.mobile set a.province=b.province,a.city=b.city 注意:第二种和第三种写法在oracle行不通的,老是报错,折腾了好长时间,最后还是用下面的语句解决了问题 四、update a set(a.province,a.city)=(select province,city from b where b.mobile=a.mobile) 其实第四种方法是第一种方法的合并。 项目中写的真实例子: 注:用a.city=null不行的