电脑技术学习

Oracle函数集锦

dn001

  6、LTRIM(c1[,c2]) 千万表以为与上面那个长的像,功能也与上面的类似,本函数是从字符串c1左侧截取掉与指定字符串c2相同的字符并返回。如果c2为空则默认截取空格。

  例如:SELECT LTRIM('WWhhhhhaT is tHis w W','Wh') FROM DUAL;

  7、RTRIM(c1,c2)与上同,不过方向相反

  例如:SELECT RTRIM('WWhhhhhaT is tHis w W','W w') FROM DUAL;

  8、REPLACE(c1,c2[,c3]) 将c1字符串中的c2替换为c3,如果c3为空,则从c1中删除所有c2。

  例如:SELECT REPLACE('WWhhhhhaT is tHis w W','W','-') FROM DUAL;

  9、SOUNDEX(c) 神奇的函数啊,该函数返回字符串参数的语音表示形式,对于比较一些读音相同,但是拼写不同的单词非常有用。计算语音的算法如下:

   保留字符串首字母,但删除a、e、h、i、o、w、y。

   将下表中的数字赋给相对应的字母:

  1:b、f、p、v

  2:c、g、k、q、s、x、z

  3:d、t

  4:l

  5:m、n

  6:R

   如果字符串中存在拥有相同数字的2个以上(包含2个)的字母在一起(例如b和f),或者只有h或w,则删除其他的,只保留1个;

   只返回前4个字节,不够用0填充

  例如:SELECT SOUNDEX('dog'),soundex('boy') FROM DUAL;

  10、SUBSTR(c1,n1[,n2]) 截取指定长度的字符串。稍不注意就可能充满了陷阱的函数。

  n1=开始长度;

  n2=截取的字符串长度,如果为空,默认截取到字符串结尾;

   如果n1=0 then n1=1

   如果n1>0,则oracle从左向右确认起始位置截取

  例如:SELECT SUBSTR('What is this',5,3) FROM DUAL;

   如果n1<0,则oracle从右向左数确认起始位置

  例如:SELECT SUBSTR('What is this',-5,3) FROM DUAL;

   如果n1>c1.length则返回空

  例如:SELECT SUBSTR('What is this',50,3) FROM DUAL;

  然后再请你猜猜,如果n2<1,会如何返回值呢

  11、TRANSLATE(c1,c2,c3) 就功能而言,此函数与replace有些相似。但需要注意的一点是,translate是绝对匹配替换,这点与replace函数具有非常大区别。什么是绝对匹配替换呢?简单的说,是将字符串c1中按一定的格式c2替换为c3。如果文字形容仍然无法理解,我们通过几具实例来说明:

  例如:

  SELECT TRANSLATE('What is this','','-') FROM DUAL;

  SELECT TRANSLATE('What is this','-','') FROM DUAL;

  结果都是空。来试试这个:

  SELECT TRANSLATE('What is this',' ',' ') FROM DUAL;

  再来看这个:

  SELECT TRANSLATE('What is this','ait','-*') FROM DUAL;

  是否明白了点呢?Replace函数理解比较简单,它是将字符串中指定字符替换成其它字符,它的字符必须是连续的。而translate中,则是指定字符串c1中出现的c2,将c2中各个字符替换成c3中位置顺序与其相同的c3中的字符。明白了?Replace是替换,而translate则像是过滤。