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