java oracle 连接字符串函数_通过shell来比较oracle和java中的字符串使用
這些準備工作齊了之后,我們來從Java中的字符串使用入手來比較一下oracle中對于字符串的處理。
java中有如下的一些函數,我會依次來做比較。
public char charAt(int index)
返回字符串中第index個字符;
oracle中可以使用substr來簡單實現,需要注意兩種方式的下標,在java的charAt中是以0開始,而在oracle中的substr中則是以1開始計數的。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").charAt(2)'
c
[ora11g@rac1 ~]$ ksh test2.sh "substr('abcd',3,1)"
S
-
c
public int length()
返回字符串的長度;
oracle中可以使用length函數,使用方式也是很類似的。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").length()'
4
[ora11g@rac1 ~]$ ksh test2.sh "length('abcd')"
LENGTH('ABCD')
--------------
4
public int indexOf(String str)
返回字符串中第一次出現str的位置;
oracle中可以使用instr來模擬實現,而且oracle可以更加的靈活。注意下標的不同
ksh test1.sh 'new String("abcdc").indexOf("c")'
2
[ora11g@rac1 ~]$ ksh test2.sh "instr('abcdc','c',1,1)"
INSTR('ABCDC','C',1,1)
----------------------
3
順便擴展一下,oracle中如果要得到某個字符串第幾次出現的下標,相對就更直接了,比如字符串“abcdc"中第二次出現字符c的下標
[ora11g@rac1 ~]$ ksh test2.sh "instr('abcdc','c',1,2)"
INSTR('ABCDC','C',1,2)
----------------------
5
public int indexOf(String str,int fromIndex)
返回字符串從fromIndex開始第一次出現str的位置;
oracle中還是使用Instr,而且使用方法和上例類似。
我們對字符串abcd從下標為1,即字符b所對應的下標開始。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcdc").indexOf("c",1)'
2
[ora11g@rac1 ~]$ ksh test2.sh "instr('abcdc','c',2,1)"
INSTR('ABCDC','C',2,1)
----------------------
3
public boolean equalsIgnoreCase(String another)
比較字符串與another是否一樣(忽略大小寫);
oracle中實現方式略有不同,不過可以直接轉換為大寫或者小寫即可。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").equalsIgnoreCase("abcD")'
true
SQL> select 1 from dual where upper('abcD')='ABCD';
1
----------
1
public String replace(char oldchar,char newChar)
在字符串中用newChar字符替換oldChar字符
oracle中的使用也有replace函數,用法也是一致的。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").replace("c","g")'
abgd
[ora11g@rac1 ~]$ ksh test2.sh "replace('abcd','c','g')"
REPL
----
abgd
public boolean startsWith(String prefix)
判斷字符串是否以prefix字符串開頭;
public boolean endsWith(String suffix)
判斷一個字符串是否以suffix字符串結尾;
oracle中的實現可以通過匹配符%來實現,也可以使用正則表達式。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").startsWith("a")'
true
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").endsWith("d")'
true
SQL> select 1 from dual where 'abcd' like 'a%';
1
----------
1
SQL> select 1 from dual where 'abcd' like '%d';
1
----------
1
public String toUpperCase()
返回一個字符串為該字符串的大寫形式;
public String toLowerCase()
返回一個字符串為該字符串的小寫形式
oracle中有upper()和lower()方法,用法效果是一致的。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").toUpperCase()'
ABCD
[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").toLowerCase()'
abcd
[ora11g@rac1 ~]$ ksh test2.sh "upper('abcd')"
UPPE
----
ABCD
[ora11g@rac1 ~]$ ksh test2.sh "lower('ABcd')"
LOWE
----
abcd
public String substring(int beginIndex)
返回該字符串從beginIndex開始到結尾的子字符串;
public String substring(int beginIndex,int endIndex)
返回該字符串從beginIndex開始到endsIndex結尾的子字符串
oracle中也有substring,相比來說功能要更豐富,注意在java中是substring,而在oracle是substr
[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").substring(1)'
Bcd
[ora11g@rac1 ~]$ ksh test2.sh "substr('ABcd',1)"
SUBS
----
ABcd
[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").substring(1,2)'
B
[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").substring(1,3)' ? ? --注意這種用法的下標,當下標為(1,3)時,才會輸出下標為1和2的字符。
Bc
[ora11g@rac1 ~]$ ksh test2.sh "substr('ABcd',1,2)" ? --注意oracle中的小標是從1開始,最后的參數2代表需要截取的字符串長度為2,所以截取了AB
SU
--
AB
public String trim()
返回該字符串去掉開頭和結尾空格后的字符串
oracle中有trim函數,而且還有ltrim,rtrim等支持的功能也要豐富一些。
[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd ").trim()'
abcd
[ora11g@rac1 ~]$ ksh test2.sh "trim('abcd ')"
TRIM
----
abcd
ltrim就是截取左邊的空白字符,rtrim就是截取右邊的空白字符。
[ora11g@rac1 ~]$ ksh test2.sh "ltrim(' abcd')"
LTRI
----
abcd
public String[] split(String regex)
將一個字符串按照指定的分隔符分隔,返回分隔后的字符串數組
oracle中目前沒有發現有現成的方法實現,只能自己DIY通過pl/sql來實現,內部也是在使用substr來遞歸解析。
下面的例子會將字符串”abcd abcd"以空格分割,最后返回的是一個數組,我們來看看里面的內容。
總結
以上是生活随笔為你收集整理的java oracle 连接字符串函数_通过shell来比较oracle和java中的字符串使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdoj 2041 超级阶梯
- 下一篇: PDF虚拟打印机的功能详解和使用方法