Some = any
使用escape自定义转义字符:
SELECT * FROM TABLE WHERE TABLE.COLUMN LIKE ‘AA\\_%’ ESCAPE ‘\\’ NOT IN (A,B,C) 等同于 !=A AND != B AND !=C
And和Or运算当一方为NULL时,如 True And Null = Null; False or Null = Null ;True Or Null = True;False And Null = False;
运算符Exists后面总是跟随一个位于括号中的子查询。如果子查询至少返回一行,则Exists求值为True
如果在select子句中使用了distinct关键字,则你只能在order by 子句中使用在select中列出的列,如select distinct t.a,t.b from t order by t.c(错),只能为select distinct t.a,t.b from t order by t.a(正确)
在order by 中可以使用列别名,也可以通过制定列的位置来排序,如select t.a,t.b from t order by 2,1
排序是NULL默认值最大,但可制定NULLS FIRST 或者 NULLS LAST 来改变,如order by t.a asc nulls first
Words And Expressions:
直接量(literal,固定值),unary operator(一元运算符),arithmetic operators(算术运算符),column alias(列别名),connection operator(连接运算符),escape character(转义字符),set operators(集合运算符),scale(小数点位数),precision(精度),order of precedence(优先级顺序)
第二章 单行函数
1.单行字符函数
NVL(A,TRUE);NVL2(A,FALSE,TRUE); SOUNDEX(C1):找出发音,比如用于按拼音排序
TRANSLATE(C1,C2,C3):如果有其中一个参数为空,则结果返回空
SELECT ASCII('A'), CHR(65),
INITCAP(' a iS b'), INSTRB('ABあCD','CD'), INSTR('ABあCD','CD'), CONCAT(NULL,NULL), CONCAT(NULL,'AAAA'), CONCAT('AAAA',NULL),
INSTR('Mississippi','i',-1,1), LPAD('AAA',7,'-'), LPAD('AAAAAA',3,'-'), LTRIM('ABABAAABBC','AB'), REPLACE('ABABAB','A',NULL), REPLACE('ABABAB',NULL,'A'), REPLACE(NULL,'A','B'),
SUBSTR('The Three Musketeers',-10), SUBSTR('THE',1,10), SUBSTR('THE',-10), SOUNDEX(''),
TRANSLATE('ABCDEFG','AA','BC'), TRANSLATE('ABCDEFG','ACE','-+'), TRANSLATE('ABCDEFG','A','-+'), TRANSLATE('ABCDEFG','A','') FROM DUAL;
2.单行数字函数
BITAND(N1,N2):对两个数字进行按位与操作 CEIL(-32.8) = -32:返回大于或者等于参数的最小整数 FLOOR(-32.8) = -33:返回小于或等于参数的最大整数;
ROUND与TRUNC的区别:round会四舍五入,trunc会直接截取,不会四舍五入 3.单行日期函数
ALTER SESSION SET NLS_DATE_FORMAT = ‘DD-Mon-YYYY HH24:MI:SS’;
SELECT ABS(-10), BITAND(32,63), CEIL(-32.8), FLOOR(-32.8), LN(2.7), LOG(2,8), MOD(8.5,3), MOD(8.5,-3), MOD(-8.5,3), POWER(2,3), ROUND(2.34567,2), ROUND(1254.5,-2), TRUNC(2.34567,2), TRUNC(1254.5,-2), SIGN(12), SIGN(0), SIGN(-12), SIGN(NULL), SQRT(49) FROM DUAL;
可以设置初始化参数fixed_date指定sysdate函数返回一个固定值。这用在测试日期和时间敏感的代码。注意,这个参数对于systimestamp函数无效。 alter system set fixed_date = 2003-01-01-10:00:00; FIXED_DATE 参数类型:字符串
语法:FIXED_DATE=yyyy-mm-dd-hh24-mi-ss(或者是一个oracle默认格式的日期时间值) 参数类别:动态:ALTER SYSTEM
FIXED_DATE 用来设置SYSDATE的值,使固化或动态变化,如:alter system set fixed_date='2006-01-01',则第次查询select sysdate from dual的结果都是2006-01-01,若要将其设回当前时间:alter system set fixed_date=none。 SELECT SYSDATE, CURRENT_DATE, DBTIMEZONE,
ADD_MONTHS(SYSDATE,2.50), LAST_DAY(SYSDATE+2),
EXTRACT(YEAR FROM SYSDATE),--提取日期里的年或月或日 CURRENT_TIMESTAMP,--带时区 LOCALTIMESTAMP,--不带时区
MONTHS_BETWEEN('2011/5/9','2011/3/9'), MONTHS_BETWEEN('2011/3/9','2011/5/9'), MONTHS_BETWEEN('2011/3/9','2011/5/10'), new_TIME(SYSDATE,'GMT','AST') FROM DUAL;
/* alter session set time_zone='UTC'; select to_char(sysdate,'YYYYMMDD HH24:MI:SS'), CURRENT_TIMESTAMP ,TZ_OFFSET(sessiontimezone) from dual;*/
因篇幅问题不能全部显示,请点此查看更多更全内容