除了寫程式之外,資料庫的應用也是蠻重要的,而SQL語法,用法大致相同,但各公司所出的資料庫還是有所差別,而ORACLE SQL給了相當多的函數應用,下面列了一些函法的名稱和用法,並且會舉幾個例子,可以直接將SQL貼到ORACLE資料庫環境下試試.

1.常用函數
1.1 字元函數
=============================================================
1.1.1 ASCII
ASCII(char)

select ASCII(’A'), ASCII(’ABC’) from dual
=============================================================
1.1.2 CHR
CHR(n [USING NCHAR_CS])

select CHR(68), CHR(68 USING NCHAR_CS) from dual
=============================================================
1.1.3 CONCAT
CONCAT(string1, string2)
兩個字串的連結, 等同於使用連接運算子( || ).

select CONCAT(’Good’,’ Morning’), ‘Good’ || ‘ Morning’ from dual
=============================================================
1.1.4 INITCAP
INITCAP(string)
將一個字串中每個單字的第一個字母, 改變為大寫, 而將其它字母變成小寫.

select INITCAP(’good MORNING’) from dual
=============================================================
1.1.5 INSTR
INSTR(string1, string2,[, n[ ,m]])
搜尋string1, 以便找到string2, 並回傳在string1 中該字元的位置,
亦即string2 在 string1 中的開始之處.

select INSTR(’easy com , easy go’, ‘easy’) from dual
select INSTR(’easy com , easy go’, ‘easy’,1,2) from dual
=============================================================
1.1.6 LENGTH
LENGTH(string)
回傳字串中的字元數量

select length(’ABCD’) from dual
select length(’ABCD長度’) from dual
=============================================================
1.1.7 LOWER, UPPER
LOWER(string)
UPPER(string)
將字串中的所有字元轉換為大(小)寫.

select lower(’AbCd’) from dual
select upper(’AbCd’) from dual
=============================================================
1.1.8 RPAD, LPAD
RPAD(string1, n[string2])
LPAD(string1, n[string2])
填補字元(空白)至第N個位置

select rpad(’ABCD’,30,’A') from dual
select lpad(’ABCD’,30,’A') from dual
select rpad(’ABCD’,30) from dual
=============================================================
1.1.9 RTRIM, LTRIM, TRIM
LTRIM(string1,[,string2])
RTRIM(string1,[,string2])
TRIM(string1,[,string2])
移除所指定的字元, (預設值空白)

select rtrim(’ ABCD ‘) from dual
select ltrim(’ ABCD ‘) from dual
select trim(’ ABCD ‘) from dual
select trim(’ ABCD ‘) from dual
SELECT LTRIM(’JJJJJeryyyyyyJJ’,'J’) FROM DUAL
=============================================================
1.1.10 REPLACE
REPLACE(string, search_string, [,replacement_string])
字串取代

select replace(’I LOVE YOU’,'LOVE’,'HATE’) from dual
select replace(’I LOVE YOU’,'LOVE’) from dual
=============================================================
1.1.11 SUBSTR
SUBSTR(string, m [, n] )
回傳一個字串的一部份, m若為負值, 用法如同right function

select substr(’abcdefghijk’,3,2) from dual
select substr(’abcdefghijk’,-3,2) from dual
select substr(’abcdefghijk’,3) from dual
=============================================================
1.1.12 TRANSLATE
TRANSLATE(string, from_string, to_string)
將一個字元組轉換成另一個字元組, 來修改字串.

select translate(’smmfrr space’,'drmfslc’,'1234567′) from dual
=============================================================

1.2 轉換函式
=============================================================
1.2.1 TO_CHAR
TO_CHAR(d [, fmt [, ‘nlsparams’] ] )
將一個日期/時間的值, 轉換為一個以字元為基礎的值.
TO_CHAR(n [, fmt [, ‘nlsparams’] ] )
將一個數值轉換為一個以字元為基礎的值.

數字格式元�
9 用來控制要被顯示之數字的有效位數
0 前導0
$ 會以一個前置的錢字號來顯示
, 在輸出中放置一個逗號
. 標記小數點
B 強迫0值被顯示為空白
S 用於一個格式字串的開始或結束處, 來顯示(+/-)值

select to_char(’1234′,’9999′) from dual => 1234
select to_char(’1234′,’99999′) from dual => 1234
select to_char(’1234′,’999′) from dual => ####

select to_char(’1234′,’0000′) from dual => 1234
select to_char(’1234′,’000000′) from dual => 001234
select to_char(’1234′,’000′) from dual => ####

select to_char(’1234′,’S0999999′) from dual
select to_char(’1234′,’0999990S’) from dual
select to_char(’1234′,’$99999′) from dual
select to_char(’00120340′,’B999999′) from dual
select to_char(’1234′,’$99,999′) from dual
select to_char(’1234′,’S09999.99′) from dual
=============================================================
1.2.2 TO_DATE
TO_DATE(string [, fmt [, ‘nlsparams’]] )
將一個日期/時間值的字元字串, 轉換為date型別的值.

日期格式元�
格式元素 函式
DAY 日的名稱(Saturday, Sunday, Monday等)
DD 月份的天
DDD 年的天
DY 天的縮寫名稱(Sat, Sun, Mon等)
HH 一天的小時
HH12 一天的小時, 同HH
HH24 一天的小時, 24小時制
MI 分鐘
MM 月份數字
MON 三個字母的月份縮寫
MONTH 完整拼出的月份名稱
Q 一年中的季
SS 秒
WW 年的週
YYYY 四位數的年
YYY 年份的最後三位數
YY 年份的最後二位數
Y 年份的最後一位數

select to_date(’2004/03/10′,’YYYY/MM/DD’) from dual
select to_date(’2004/10/03′,’YYYY/DD/MM’) from dual
select to_date(’20040310′,’YYYYMMDD’) from dual
=============================================================
1.2.3 TO_NUMBER
TO_NUMBER(string [, fmt [, ‘nlsparams’] ] )
將字元型態轉換為數值型態

select * from user_tables order by to_number(INITIAL_EXTENT)
=============================================================
1.2.4 NVL
NVL(expr1, expr2)
如果一個給定的輸入值為null時, 會回傳一個另一值, 以便使用。假如expr1是null時, nvl會回傳expr2; 否則, 它會單純地回傳expr1.

select username, nvl(to_char(lock_date),’Not Locked’) from dba_users
=============================================================
1.2.5 DECODE
DECODE (expr , search , result [ , search , result…..] [ , default ] )
一個類似IF敘述的能力。

一般用法:
SELECT name, DECODE(
plugged_in,
0, ‘Not Plugged In’,
1,’Plugged In’,
‘Invalid plugged_in value’
) plugged_in
FROM v$datafile

進階用法:
SELECT SUM(DECODE(owner,’SYS’,1,0)), SUM(DECODE(owner,’SYSTEM’,1,0))
FROM dba_objects

巢式用法:
select owner, table_name, column_name,
DECODE(data_type,
‘VARCHAR2′,’VARCHAR2 (’ || TO_CHAR(DATA_LENGTH) || ‘)’,
‘NUMBER’, decode(data_precision,
NULL, ‘NUMBER’,
‘NUMBER (’ ||
TO_CHAR(DATA_PRECISION) || ‘,’ ||
TO_CHAR(data_scale || ‘)’ )))
from dba_tab_columns
where data_type in (’VARCHAR2′,’NUMBER’)

=============================================================

1.3 數字函式=============================================================
1.3.1 ABC
ABC(n)
回傳一個數字的絕對值

select ABS(-1), ABS(1) from dual
=============================================================
1.3.2 MOD
MOD (m,n)
回傳m除以n的餘數

select MOD(18,12), MOD(30,12), MOD(30,30) from dual
=============================================================
1.3.3 SIGN
SIGN(n)
回傳一個值, 以指出n的符號.
(-1 負數, 0 數字為零, 1 正數)

select SIGN(76), SIGN(0), SIGN(-76.17) from dual
=============================================================
1.3.4 GREATEST, LEAST
GREATEST (expr [ , expr…..] )
LEAST (expr [ , expr…..] )
從所提供之引數的列表中, 回傳最大(小) 值.

select GREATEST(1,2,3) from dual
select GREATEST(’One’,'Two’) from dual
select LEAST(1,2,3) from dual
select GREATEST(TO_DATE(’05/18/2004′,’MM/DD/YYYY’),
TO_DATE(’04/01/2004′,’MM/DD/YYYY’)) from dual

1.3.5 ROUND
ROUND(n, m)
把一個值進位到所指定之特定小數點的位數.
參數:
n: 指定一個將進位的值
m:
select ROUND(123.45), ROUND(123.45,1), ROUND(123.45,-1) fro

Oracle的字串處理的更多相关文章

  1. iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html

    iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html 前言 這裡只是講一個故事,一個發生在我身上的真實的故事.曾經,我以為搞加 ...

  2. #Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的APP端

    原文:#Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的APP端 #Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的 ...

  3. PTA题目的處理(四)

    题目7-3 求交错序列前N项和 1.实验代码 #include <stdio.h> //#include <stdlib.h> int main() { ,N; double ...

  4. PTA題目的處理(一)

    **題目1:A乘B** **實驗代碼** #include <stdio.h> #include <stdlib.h> int main() { signed int a,b; ...

  5. 最大公共字串LCS问题(阿里巴巴)

    给定两个串,均由最小字母组成.求这两个串的最大公共字串LCS(Longest Common Substring). 使用动态规划解决. #include <iostream> #inclu ...

  6. 编程:使用递归方式判断某个字串是否回文(Palindrome)

    Answer: import java.util.Scanner; public class Palindrome { private static int len;//全局变量整型数据 privat ...

  7. 在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理

        我們公司所代管的網站裡,有幾個流量是非常大的,在尖峰的時刻同時上線人數可能高達數千到數萬人,而在這個時候如果使用 netstat 或 TCPView 查看所有 TCP 連線時就會看到非常多處於 ...

  8. NOIP2002字串变换[BFS]

    题目描述 已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$.A2 ...

  9. 字串符相关 split() 字串符分隔 substring() 提取字符串 substr()提取指定数目的字符 parseInt() 函数可解析一个字符串,并返回一个整数。

    split() 方法将字符串分割为字符串数组,并返回此数组. stringObject.split(separator,limit) 我们将按照不同的方式来分割字符串: 使用指定符号分割字符串,代码如 ...

随机推荐

  1. OOO的CSS

    应ooo要求 寻找他手写一千年的css的继承人 html { background:#f7f7f7 url(images/bg-pattern.jpg) } body { margin:; paddi ...

  2. luogu P3327 [SDOI2015]约数个数和 莫比乌斯反演

    题面 我的做法基于以下两个公式: \[[n=1]=\sum_{d|n}\mu(d)\] \[\sigma_0(i*j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]\] 其中\(\ ...

  3. nuxt项目服务端渲染应用部署、使用pm2守护进程及遇到的问题处理

    服务端渲染应用部署应该先编译构建,然后再启动 Nuxt 服务,可通过以下两个命令来完成: nuxt build nuxt start 我们已经在pakage.json里配置好script命令 { &q ...

  4. Xilinx ISE中使用Synplify综合报错的原因之二

    今天发现,不同的器件型号下由IP core生成的模块有时不通用,在实现(implementation)时会出现translate错误.

  5. saltstack自动化运维工具搭建个人笔记

    至于为什么选择saltstack,因为Puppet.Chef基于Ruby开发,而ansible.saltstack基于python开发,便于后期二次,良好的可移植性. 又,ansible基于SSH协议 ...

  6. VLC搭建RTSP服务器

    实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...

  7. Cesium 1.54评测 【转】

    重要功能评测 3dtiles数据上画线和贴纹理   3dtiles数据上画线和贴纹理 把线条贴到3dtiles上需要用到两个属性:clampToGround和classificationType. c ...

  8. count(*) count(1) count(字段) 区别

    count(*) count(1) count(字段) 区别 count(*)和count(字段) count(*)和count(字段)使用的目的是不一样的,在必须要使用count(字段)的时候还是要 ...

  9. Tensorflows安装(cpu版最简安装方法)

    一.说明 首先声明,本人系统是Windows10 64位,Win7未试. 本文旨在帮助园友以更简单的方式安装Tensorflow,下面介绍的是如何安装Python的Tensorflow cpu版本. ...

  10. Python示例项目学习

    原文地址:http://www.360doc.com/showweb/0/0/874025604.aspx 「 Python3 实现火车票查询工具 」   相信很多人学Python都是冲着它强大的爬虫 ...