此文是《【函数】Oracle的常用字符函数实验展示(一)》的姊妹篇。
参考地址:http://space.itpub.net/519536/viewspace-623692
GO ON ...
8.REPLACE函数
REPLACE函数完成替换功能,如果不指定替换的内容将会删除与之匹配的内容。
1)删除FIRST_NAME字段中出现的“cool”字符串
sec@ora10g> select FIRST_NAME, replace(FIRST_NAME,'cool') replace from t;
FIRST_NAME REPLACE
--------------- ---------------
Secooler Seer
此时Secooler已经变成了“先知”(Seer):)。
2)将FIRST_NAME字段中的“cool”替换为“****”符号
sec@ora10g> select FIRST_NAME, replace(FIRST_NAME,'cool','****') replace from t;
FIRST_NAME REPLACE
--------------- -----------------------------------------------------
Secooler Se****er
9.SUBSTR函数
使用SUBSTR函数可以得到字符串的一个子串。
1)得到FIRST_NAME字段的前三个字符
sec@ora10g> select FIRST_NAME, substr(FIRST_NAME,1,3) substr from t;
FIRST_NAME SUBSTR
--------------- ------------
Secooler Sec
2)从FIRST_NAME字段的第三个字符开始连续取4个字符。
sec@ora10g> select FIRST_NAME, substr(FIRST_NAME,3,4) substr from t;
FIRST_NAME SUBSTR
--------------- ----------------
Secooler cool
的确很“cool”吧:)
3)从相反的方向获得子字符串
下面的SQL中substr函数的第二个参数是“-6”,表示从字符串后面向前数第6个字符开始,再读取4个字符。这里构造的结构和上面的结果相同,可谓殊途同归是也。
这里之所以使用到了rtrim函数,是为了消除字符串尾部空格对结果的影响。
sec@ora10g> select FIRST_NAME, substr(rtrim(FIRST_NAME),-6,4) substr from t;
FIRST_NAME SUBSTR
--------------- ----------------
Secooler cool
4)SUBSTR函数的第三个参数可以为空,表示从截取开始的位置一直到字符串尾部的意思。
sec@ora10g> select FIRST_NAME, substr(FIRST_NAME,3) substr from t;
FIRST_NAME SUBSTR
--------------- ----------------------------------------------------
Secooler cooler
10.TRANSLATE函数
1)将“H”翻译成“S”、将“O”翻译成“e”、将“U”翻译成“c”
sec@ora10g> select FAMILY_NAME, translate(FAMILY_NAME,'HOU','Sec') translate from t;
FAMILY_NAME TRANSLATE
--------------- ----------------------------------------------------
HOU Sec
2)想一想下面的SQL为什么没有把“Secooler”转换为“Shengwen”?体会一下这个“翻译”过程的细节之处。
sec@ora10g> select FIRST_NAME, translate(FIRST_NAME,'Secooler','Shengwen') from t;
FIRST_NAME TRANSLATE(FIRST_NAME,'SECOOLER','SHENGWEN')
--------------- ----------------------------------------------------
Secooler Shennwhn
通过自己双手和思考得到的才是永恒,这里先不道破鸟~~
11.INSTR函数
语法是:INSTR (string , substring [, position [, occurrence ] ])
INSTR函数可以得到子字符串(当然包含单个字符)在字符串中的位置,返回的是数字。
1)得到字母“o”在FIRST_NAME字段第一次出现的位置
sec@ora10g> select FIRST_NAME, instr(FIRST_NAME,'o') instr from t;
FIRST_NAME INSTR
--------------- ----------
Secooler 4
2)从字符串的第5个字符开始查找,第一次出现字母“o”的位置
sec@ora10g> select FIRST_NAME, instr(FIRST_NAME,'o',5) instr from t;
FIRST_NAME INSTR
--------------- ----------
Secooler 5
3)从字符串的第1个字符开始查找,第二次出现字母“o”的位置
sec@ora10g> select FIRST_NAME, instr(FIRST_NAME,'o',1,2) instr from t;
FIRST_NAME INSTR
--------------- ----------
Secooler 5
12.LENGTH函数
参考《【差异】LENGTH与VSIZE的区别演示》http://space.itpub.net/519536/viewspace-623537
13.小结
通过两篇小文儿给大家介绍了12个Oracle常用字符函数。善用函数带给我们的便利不可小视,也许不经意间在使用这些函数进行简单组合之后就会给我们带来无限的快感。
Good luck.
secooler
2009.12.27
-- The End --
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70034820/viewspace-2994182/
,如需转载,请注明出处,否则将追究法律责任。