Java和SQL取兩個字元間的值

  • 2019 年 11 月 3 日
  • 筆記

Java

String str = "abcdefg";String result = str.substring(str.indexOf(">") 1, str.lastIndexOf("<"));

StringUtils.substringBefore(「abcdec」, 「c」); 結果是:ab 這裡是以第一個」c」為標準。StringUtils.substringBeforeLast(「abcdec」, 「c」) 結果為:abcde這裡是以倒數第一個」c」為標準。

SQL

對「*」及以前的字元進行截取

在sql中可以使用下邊函數進行截取特殊字元: substr(str,instr(str,'*',1) 1)

其中,使用了substr函數和instr函數。 1、substr(string,start_position,[length])求子字元串,返回字元串

第一個參數表示要截取的字元串,第二個表示起始位置,第三個表示截取的長度,可省略。

2、instr(string,subString,position,ocurrence) 查找字元串的位置

第一個參數表示源字元串,第二個是要查找的字元,第三個是要查找的開始位置,第四個是查找的字元是第幾個。

取一個欄位中兩個字元之間資訊

1、substring(a.specifications,charindex(':',a.specifications,charindex(';',specifications)) 1,1)SQL報錯FUNCTION db.charindex does not exist

2、使用substring_index語法

用法規則:substring_index(「待截取有用部分的字元串」,「截取數據依據的字元」,截取字元的位置N)

具體要截取第N個逗號前部分的字元,在字元串中以逗號為索引,獲取不同索引位的字元。N可以為負數,表示倒數第N個索引字元後面的字元串。(有負號的時候,可以將整個字元倒過來看,依舊是第N個字元前面的部分。)

具體例子:首先假定需要截取的字元串為「192;168;8;203」,這裡截取的依據是分號:「;」

結果如下:

取第一個逗號前的字元串 :SELECT SUBSTRING_INDEX(『192;168;8;203』,』;』,1);==>得到結果為: 192

取最後逗號後面的部分:SELECT SUBSTRING_INDEX(『192;168;8,203』,』;』,-1);==>得到結果為: 203

取第2個逗號前那部分字元串里,最後逗號後面的部分SELECT SUBSTRINGINDEX(SUBSTRINGINDEX(『192;168;8;203』,』;』,2),』;』,-1);==>得到結果為: 168

取倒數第二個逗號後面部分字元串,再去這部分里第一個都號前的部分:SELECT SUBSTRINGINDEX(SUBSTRINGINDEX(『192;168;8,203』,』;』,-2),』;』,1);==> 得到結果為:8