0、获取出现的位置--instr()函数
string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。格式一
instr( string1, string2 ) --instr(源字符串, 目标字符串)
格式二
instr( string1, string2 [, start_position [, nth_appearance ] ] ) --instr(源字符串, 目标字符串, 起始位置, 匹配序号)
1、查询两个日期之间的天数
简单来说就是计算两个日期之间的天数SELECT ABS(TO_DATE('2017-08-24','YYYY-MM-DD') - TO_DATE('2017-08-25','YYYY-MM-DD')) FROM DUAL
2、查看表结构
可了解表的具体组成SELECT * FROM cols WHERE TABLE_name=upper('表名');
3、依据部分表名模糊查表
数据库中有成百上千的表,忘记了表的全称,可依据所记忆的部分表名在整个数据库中进行模糊查找(注意:Part_Table_Name区分大小写)SELECT table_name,tablespace_name FROM user_tables WHERE table_name like '%Part_Table_Name%'
4、数据计算时:除数为0时解决方案
当数据库中查询到的数据作为除数并且为0时,执行SQL会报出“ORA:01476除数不能为0” 的错误,例如:SPEED=总TOTAL_DISTANCE/TIME 如果时间为0就没法玩了,所以可以采取以下方法(若TIME为0,SPEED就为0)SPEED = DECODE(TIME,0,0, TOTAL_DISTANCE / TIME);
5、case选择函数
运用在数据库SQL选择条件比较多时COUNT (CASE WHEN csd.codingst_code LIKE '10%' THEN 1 ELSE NULL END) OTHER, --其它
6、去除小数点后没用的0
有的时候我们在数据库中会看到12.320000000,63.21012000。。。诸如此类的数据,是否感觉到*疼RTRIM(TO_CHAR(v_number,'FM999,999,999,990.999999'),'.')
7、SQL查询去重
数据库查询时只保留一个相同的数据(去重)SELECT DISTINCT colName FROM tableName; --去除多余重复字段
SELECT DISTINCT colName1||colName2||colName3 FROM tableName; --多重去重
8、**** join
各种连接inner join --在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
left join --在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。
right join --在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。
full join --在两张表进行连接查询时,返回左表和右表中所有没有匹配的行。