Oracle 字符串函數(shù) substr(字符串,截取開始位置,截取長(zhǎng)度)
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),安塞網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安塞等地區(qū)。安塞做網(wǎng)站價(jià)格咨詢:18982081108
1. 如果最后一個(gè)截取長(zhǎng)度參數(shù)為空,則表示從截取開始位置起截到最末
2. 如果截取開始位置 為大于0的數(shù)字,則表示從字符串左數(shù)幾位開始
3. 如果截取開始位置 為小于0的數(shù)字,則表示從字符串右數(shù)幾位開始
1、將新建好的表aaaa,填充需要查詢的數(shù)據(jù)以"_"或者","為分隔符的兩條數(shù)據(jù)。
2、先挑ID為1的數(shù)據(jù)進(jìn)行截取查詢演示。
3、如果已知截取字符的長(zhǎng)度和特殊字符位置,就可以用substring()函數(shù)來從字符串的開始位置,截取到特殊字符出現(xiàn)的位置。
4、使用charindex()函數(shù)來返回特殊字符出現(xiàn)的位置,查詢結(jié)果及語句。
5、使用LEFT()函數(shù)和charindex()函數(shù)來從字符最左邊開始到特殊字符出現(xiàn)的位置。
6、第一個(gè)參數(shù)表示被截取的字符串,第二個(gè)參數(shù)表示要在第一個(gè)參數(shù)中開始截取的位置,第三個(gè)參數(shù)表示要截取的長(zhǎng)度。
關(guān)于Oracle里面的一些小函數(shù)
要求 A 數(shù)據(jù)庫表中的一個(gè)字符串? 可能含有 + 例 ORC+
也可能不含 +
B 要求如果該字符串含有 + 則取 + 之前的字符 例 ORC+ 取ORC
C 如果該字符串不含 + 則直接取該字符串
解答 利用ORACLE中 INSTR SUBSTR以及CASE WHEN語法即可實(shí)現(xiàn)
Oracle中函數(shù)
INSTR INSTR方法的格式為
INSTR(源字符串 目標(biāo)字符串 起始位置 匹配序號(hào))
默認(rèn)查找順序?yàn)閺淖蟮接?當(dāng)起始位置為負(fù)數(shù)的時(shí)候 從右邊開始查找
例 Select INSTR( ORC+ + ) From dual
返回的是"4" 如果該字符串沒有匹配字符 返回的是 0
SUBSTR 取子字符串 取子字符串
SUBSTR(源字符串 起始位置 要取多少位)
從 起始位置 開始 取 多少"個(gè)
例 Select SUBSTR( ORC+ ) From dual;
返回的是 ORC
全例如下
表T_RCV_ISSUE
WH_CD字段
取 WH_CD 如果該字段包含 + 取 + 之前的字符
如果該字段沒有 + 取整個(gè)字段
T_RCV_ISSUE表
WH_CD 分別為 MR PS+ MR WS MR WS+ MR PS
執(zhí)行
SELECT CASE
WHEN INSTR(WH_CD + )
THEN SUBSTR(WH_CD INSTR(WH_CD + ) )
ELSE WH_CD
END AS WH_CD
FROM?? T_RCV_ISSUE
lishixinzhi/Article/program/Oracle/201311/17245
如果Oracle版本不是太低的話,使用 正則表達(dá)式函數(shù) REGEXP_SUBSTR 處理。\x0d\x0a\x0d\x0a5個(gè)參數(shù)\x0d\x0a第一個(gè)是輸入的字符串\x0d\x0a第二個(gè)是正則表達(dá)式\x0d\x0a第三個(gè)是標(biāo)識(shí)從第幾個(gè)字符開始正則表達(dá)式匹配。(默認(rèn)為1)\x0d\x0a第四個(gè)是標(biāo)識(shí)第幾個(gè)匹配組。(默認(rèn)為1)\x0d\x0a第五個(gè)是是取值范圍:\x0d\x0ai:大小寫不敏感;\x0d\x0ac:大小寫敏感;\x0d\x0an:點(diǎn)號(hào) . 不匹配換行符號(hào);\x0d\x0am:多行模式;\x0d\x0ax:擴(kuò)展模式,忽略正則表達(dá)式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');