首页 > 数据库 > Oracle > Oracle SQL函数(二)
1.1
字符函数领受字符参数,那些字符可以往自于一个表中的列,或更一般地讲,可以往自于肆意表达式。然后字符函数会按照某种体式格局处置输进参数,并返回一个效果。字符函数的一个例子是UPPER(),其成果是将字符串中的一切字母全数转换成年夜写,并返回新的字符串。其余一个例子是NVL(),其成果是将一个空值转换成传递给该函数的值。表1-1列出了一些字符函数。在表1-1战随后的一切语法界说中,x战y皆可以暗示一个表中的列,或更一般地讲,可所以肆意有用的表达式。
表1-1
|
函 |
说 |
|
ASCII(x) |
返回字符x的ASCII码 |
|
CHR(x) |
返回ASCII码为x的字符 |
|
CONCAT(x, |
将y添加在x上,并将获得的字符串作为效果返回 |
|
INITCAP(x) |
将x中每个单词的尾字母皆转换成年夜写,并返回获得的字符串 |
|
INSTR(x,
[, |
在x中查找字符串find_string,然后返回find_string地点的位置。可以供应一个可选的start位置往指定该函数从那个位置起头查找。一样,也可以指定一个可选的occurrence参数,往申明应当返回find_string第屡次出现的位置 |
|
LENGTH(x) |
返回x中字符的个数 |
|
LOWER(x) |
将x中的字母转换成小写,并返回获得的字符串 |
|
LPAD(x, |
在x的左侧补齐空格,获得总长为width个字符的字符串。该函数可以供应一个可选的pad_string,那个参数用于指定重复使用哪个字符串往补齐x左侧的空位。返回x被补齐以后的效果字符串 |
|
LTRIM(x[, |
从x的左侧截往一些字符。可使用一个可选的参数trim_string往指定要截往的字符;若是没有指定trim_string参数,则默许截往空格 |
|
NANVL(x, |
若是x匹配NAN那个非凡值(非数字),便返回value;不然返回x。(那是Oracle |
|
NVL(x, |
若是x为空,便返回value;不然返回x |
|
NVL2(x,value1, |
若是x非空,便返回value1;不然返回value2 |
|
REPLACE(x,search_string, |
在x中查找search_string,并将其交流为replace_string |
|
RPAD(x,width[,pad_string]) |
取LPAD()相同,没有外要对x的右边补齐 |
|
RTRIM(x[,trim_string]) |
取LTRIM()相同,没有外要对x的右边截往 |
|
SOUNDEX(x) |
返回一个包含x的发音的字符串。该函数用于对英文发音好别但却比拟接近的单词进行比拟 |
|
SUBSTR(x, |
返回x中的一个子字符串,那个子字符串从start处起头,借可以为那个子字符串指定一个可选的length参数 |
|
TRIM({[LEADING |
从x的左侧战右边同时截往一些字符。可使用一个可选的参数trim_string往指定要截往的字符;若是没有指定trim_string参数,则默许截往空格;LEADING删除字符串左侧的字符,TRAILING删除字符串右边的字符, |
|
UPPER(x) |
将x中的字母转换为年夜写,并返回获得的字符串 |
1.
ASCII(x)函数用于获得字符x的ASCII码,CHR(x)函数用于获得ASCII码为x的字符。
下里那个查询使用ASCII函数获得a、A、0和9的ASCII码:
SELECT
FROM
ASCII("a")
----------
|
属意: 在此查询中我们使用了dual表。dual表只包含一行;那个表可以用往施行好池任何特定表进行操作的查询。 |
下里那个查询使用CHR函数获得ASCII码为97、65、122、90、48及57的字符:
SELECT
FROM
C
--
a
属意在此查询中,CHR函数返回的字符取前一个例子中传递给ASCII函数的那些参数完备相同。那申明CHR函数战ASCII函数的效果是互逆的。
2.
CONCAT(x,
下里那个查询使用CONCAT函数将last_name添加在first_name以后:
SELECT
FROM
CONCAT(FIRST_NAME,LAST_NAME)
--------------------
JohnBrown
CynthiaGreen
SteveWhite
GailBlack
DoreenBlue
|
属意:
CONCAT函数取 |
3.
INITCAP(x)函数用于将x中每个单词的尾字母转换成年夜写。
下里那个查询从products表中挑选product_id战description列,并使用INITCAP函数将description列中的每个单词的尾字母转换成年夜写:
SELECT
FROM
WHERE
PRODUCT_ID
----------
1
2
3
4.
INSTR(x,find_string[,start][,occurrence])函数用于在x中查找find_string。INSTR()函数返回find_string地点的位置,该函数可使用可选参数start往申明从x中的哪个位置起头查找,借可使用可选参数occurrence申明应当返回find_string第屡次出现的位置。
下里那个查询从products表中挑选product_id为1的行的name列,并闪现字符串Science在个中的位置:
SELECT
FROM
WHERE
NAME
---------------
Modern
下里那个查询使用INSTR函数闪现了从产品名的开尾起头第两次出现字母e的位置:
SELECT
FROM
WHERE
NAME
---------------
Modern
属意在字符串Modern
在字符函数中也可使用日期。下里那个查询使用INSTR函数闪现了第一个顾主的dob中字符串JAN的位置。
SELECT
FROM
WHERE
CUSTOMER_ID
------------
1
5.
LENGTH(x)函数用于获得x中字符的个数。下里那个查询使用LENGTH函数闪现了products表中name列中字符串的长度:
SELECT
FROM
NAME
---------------
Modern
Chemistry
Supernova
Tank
下里那个查询使用LENGTH函数闪现了组成产品价格(price列)的字符总数;属意小数点(.)也较劲争论在字符总数之内。
SELECT
FROM
WHERE
PRICE
---------
19.95
30
6.
LOWER(x)函数用于将x中的字母转换成小写。同理,UPPER(x)函数用于将x中的字母转换成年夜写。
下里那个查询从customers表中挑选first_name战last_name列,使用UPPER函数将first_name列转换成年夜写,并使用LOWER函数将last_name列中的字符串转换成小写:
SELECT
FROM
UPPER(FIRST_NAME)
------------------
JOHN
CYNTHIA
STEVE
GAIL
7.
LPAD(x,
下里那个例子从products表中挑选name战price列。name列使用RPAD函数进行右补齐,长度达到30个字符,并且使用小数点往补齐空位。price列使用LPAD函数进行左补齐,长度达到8个字符,并且使用
SELECT
FROM
WHERE
RPAD(NAME,30,".")
------------------------------
Modern
Chemistry.....................
Supernova.....................
|
属意: 那个例子申明可以对数字行使一些字符函数。具体往说,就是那个例子中的price列包含了数字,而我们使用LPAD函数进行了左补齐。 |
8.
LTRIM(x
SELECT
FROM
LTRIM("
---------------------------
Hello
SELECT
FROM
TRIM(’O’
---------
Hey
9.
NVL函数用于将空值转换成一个已知的值。NVL(x,value)的效果如下:若是x为空,则返回value;不然返回x。
下里那个查询从customers表中挑选customer_id战phone列。若是phone列的值为空,则使用NVL函数将其转换为字符串Unknown
SELECT
FROM
CUSTOMER_ID
------------
1
2
3
4
5
顾主#5的phone列被转换为Unknown
10.
NVL2(x,
下里那个查询从customers表中挑选customer_id战phone列。若是phone列的值非空,则使用NVL2函数将其转换为字符串Known;若是若是phone列的值为空,则使用NVL2函数将其转换为Unknown:
SELECT
FROM
CUSTOMER_ID
------------
1
2
3
4
5
属意顾主#1到#4的phone列的值被转换成了Known,因为那些记实的phone列皆没有为空。而顾主#5的phone列的值则被转换成了Unknown,因为该行的phone列的值为空。
11.
REPLACE(x,
下里那个例子使用REPLACE函数从products表中查询product_id为1的记实的name列(其name列为Modern
SELECT
FROM
WHERE
REPLACE(NAME,"SCIENCE","PHYSICS")
-------------------------------------
Modern
|
属意: REPLACE函数其实没有会实正对数据库中的数据进行建改,而是只对效果汇合返回的行进行建改。 |
12.
SOUNDEX(x)用于获得包含x发音的一个字符串,该函数用于对英文拼写好别但发音相同的单词进行比拟。
下里那个查询使用SOUNDEX函数从customers表中挑选last_name发音相同于whyte的行的last_name列:
SELECT
FROM
WHERE
LAST_NAME
----------
White
下里那个查询获得发音相同于“bloo”的last_name列:
SELECT
FROM
WHERE
LAST_NAME
----------
Blue
13.
SUBSTR(x,
下里那个查询使用SUBSTR函数挑选products表中name列的一个子字符串:它从name列的第两个字符起头,长度为7个字符:
SELECT
FROM
WHERE
SUBSTR(name,
------------------------
odern
hemistr
upernov
14.
在函数中并非只能使用表中的列:也可以供应肆意有用的表达式,条件是那个表达式的效果是一个字符串。下里那个查询使用SUBSTR函数从字符串Mary
SELECT
FROM
SUBSTR("Mary
-------------------------------------------
little
15.
在一个SQL语句中,可使用函数的肆意有用组合。下里那个查询便使用了一个函数组合,个中包含UPPER函数战SUBSTR函数;属意SUBSTR()函数的输出被作为参数传递给UPPER函数:
SELECT
FROM
WHERE
NAME
----------------
Modern
Chemistry
Supernova
|
属意: 那种函数组合的能力没有只限于字符函数。任何有用的函数组合皆可以正常使用。 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22311142/viewspace-1115560/ ,如需转载,请注明出处,否则将追究法律责任。