SQL> create table table1(xm varchar(8)); SQL> insert into table1 values('weather'); SQL> insert into table1 values('wether'); SQL> insert into table1 values('gao');
SQL> select xm from table1 where soundex(xm)=soundex('weather');
XM
-------- weather wether
SQRT
返回数字n的根
SQL> select sqrt(64),sqrt(10) from dual; SQRT(64) SQRT(10) --------- --------- 8 3.1622777
STDDEV
返回选者的列表项目的标准差,所谓标准差是方差的平方根
SUBSTR(string,start,count)
取子字符串,从start开始,取count个
SQL> select substr('13088888888',3,8) from dual; SUBSTR(' -------- 08888888
如果m是负数,则从尾部开始。
Sql>select substr('Morning',-3,2) from dual; SUBSTR('MORNING',-3,2) ---------------------- in
如果m是负数,超过字符串的最大长度,则返回null。
SUBSTRB
与SUBSTR大致相同,只是I,J是以字节计算。
SUM
SUM([{DISTINCT|ALL}])返回选择列表项目的数值的总和。
SYS_EXTRACT_UTC
Fmt:sys_extract_utc(datatimestamp_with_timezone):该函数用于返回特定时区时间所对应的格林威治时间。
SYSDATE
用来得到系统的当前日期时间
SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual; TO_CHAR(SYSDATE,' ----------------- 09-05-2004 星期日
trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒 SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh, 2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;
HH HHMM
------------------- ------------------- 2004.05.09 11:00:00 2004.05.09 11:17:00
SYS_CONTEXT
Sys_context(‘context’,’attribute’)
该函数用于返回应用上下文的特定属性值,其中context为应用上下文名,而attribute则用于指定属性名。示例如下:
select
SYS_CONTEXT('USERENV','TERMINAL') terminal, SYS_CONTEXT('USERENV','LANGUAGE') language, SYS_CONTEXT('USERENV','SESSIONID') sessionid,
SYS_CONTEXT('USERENV','INSTANCE') instance, SYS_CONTEXT('USERENV','ENTRYID') entryid, SYS_CONTEXT('USERENV','ISDBA') isdba,
SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory, SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency, SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar, SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') nls_date_format, SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language, SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
SYS_CONTEXT('USERENV','CURRENT_USER') current_user, SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid, SYS_CONTEXT('USERENV','SESSION_USER') session_user, SYS_CONTEXT('USERENV','SESSION_USERID') session_userid, SYS_CONTEXT('USERENV','PROXY_USER') proxy_user, SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid, SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain, SYS_CONTEXT('USERENV','DB_NAME') db_name, SYS_CONTEXT('USERENV','HOST') host, SYS_CONTEXT('USERENV','OS_USER') os_user,
SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name, SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol, SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id, SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE') authentication_type, SYS_CONTEXT('USERENV','AUTHENTICATION_DATA') authentication_data from dual
SYS_GUID SYSTIMESTAMP
该函数用于返回当前系统的日期时间及时区。
TAN
返回数字的正切值
SQL> select tan(20),tan(10) from dual;
TAN(20) TAN(10) --------- --------- 2.2371609 .64836083
TANH
返回数字n的双曲正切值,n为弧度 SQL> select tanh(20),tan(20) from dual; TANH(20) TAN(20) --------- --------- 1 2.2371609
TO_CHAR(date,'format')
x是一个date或number数据类型,函数将x转换成fmt指定格式的char数据类型, 如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。 如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS =\
SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2004/05/09 21:14:41
特殊格式的日期型数据
表7-10 常用日期数据格式
格式返回值样例显示
1. Y或YY或YYY 年的最后一位,两位或三位 Select to_char(sysdate,’YYY’) from dual; 002表
示2002年
2. SYEAR或YEAR SYEAR使公元前的年份前加一负号 Select to_char(sysdate,’SYEAR’) from
dual; -1112表示公元前111 2年
3. Q 季度,1~3月为第一季度 Select to_char(sysdate,’Q’) from dual; 2表示第二季度①
4. MM 月份数 Select to_char(sysdate,’MM’) from dual; 12表示12月 5. RM 月份的罗马表示 Select to_char(sysdate,’RM’) from dual; IV表示4月
6. Month 用9个字符长度表示的月份名 Select to_char(sysdate,’Month’) from dual; 12 7. WW 当年第几周 Select to_char(sysdate,’WW’) from dual; 24表示2002年6月13日为第24周 8. W 本月第几周 Select to_char(sysdate,’W’) from dual; 2002年10月1日为第1周
9. DDD 当年第几, 1月1日为001,2月1日为032 Select to_char(sysdate,’DDD’) from dual; 363
2002年1 2月2 9日为第363天
10. 11. 12. 13.
为02
DD 当月第几天 Select to_char(sysdate,’DD’) from dual; 04 10月4日为第4天 D 周内第几天 Select to_char(sysdate,’D’) from dual; 5 2002年3月14日为星期一 DY 周内第几天缩写 Select to_char(sysdate,’DY’) from dual; SUN 2002年3月24日为
星期天,同DAY
HH或HH12 12进制小时数 Select to_char(sysdate,’HH’) from dual; 02 午夜2点过8分
14. 15. 16. 17. 18.
HH24 24小时制 Select to_char(sysdate,’HH24’) from dual; 14 下午2点08分为14 MI 分钟数(0~59) Select to_char(sysdate,’MI’) from dual; 17下午4点17分 SS 秒数(0~59) Select to_char(sysdate,’SS’) from dual; 22 11点3分22秒 AM (上午/下午)select to_char(sysdate,'am') from dual; Year select to_char(sysdate, 'year') from dual;
常用的数字格式:
SQL>Select to_char(34534523.2222,'99999999.9$') from dual; $34534523.2
select to_char(0.7,'990.99') from dual 四舍五入
TO_CHAR(date,’fmt’):fm前缀用来去除首尾的空字符或0 TO_CHAR(total,’fm$999999’)
如果想转成$0.25,那就要写成fm$9999990.99 可以把日期转换成字符
TO_CHAR(log_time,’MM/YY’) TO_CHAR(lot_time,’fmdd’’of;’’mm yyyy’) 具体格式如下