新聞中心
在Oracle數(shù)據(jù)庫(kù)中,SUBSTR函數(shù)是一個(gè)非常常用的字符串處理函數(shù),它用于從一個(gè)字符串中提取子字符串,SUBSTR函數(shù)的語(yǔ)法如下:

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供薩爾圖企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、html5、小程序制作等業(yè)務(wù)。10年已為薩爾圖眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
SUBSTR(string, start_position, [length])
string是要處理的字符串,start_position是開(kāi)始提取的位置(從1開(kāi)始計(jì)數(shù)),length是要提取的子字符串的長(zhǎng)度,如果省略length參數(shù),那么將提取從start_position位置開(kāi)始到字符串末尾的所有字符。
下面詳細(xì)介紹一下SUBSTR函數(shù)的使用場(chǎng)景和示例:
1、提取指定位置的單個(gè)字符
當(dāng)需要從字符串中提取一個(gè)特定位置的字符時(shí),可以使用SUBSTR函數(shù),要從字符串’Hello World’中提取第5個(gè)字符(從1開(kāi)始計(jì)數(shù)),可以使用以下SQL語(yǔ)句:
SELECT SUBSTR('Hello World', 5, 1) FROM DUAL;
執(zhí)行結(jié)果為:
o
2、提取指定長(zhǎng)度的子字符串
當(dāng)需要從字符串中提取一個(gè)指定長(zhǎng)度的子字符串時(shí),可以使用SUBSTR函數(shù),要從字符串’Hello World’中提取前5個(gè)字符,可以使用以下SQL語(yǔ)句:
SELECT SUBSTR('Hello World', 1, 5) FROM DUAL;
執(zhí)行結(jié)果為:
Hello
3、提取從指定位置開(kāi)始到字符串末尾的子字符串
當(dāng)需要從字符串中提取從指定位置開(kāi)始到字符串末尾的所有字符時(shí),可以省略SUBSTR函數(shù)的第三個(gè)參數(shù),要從字符串’Hello World’中提取從第6個(gè)字符開(kāi)始到字符串末尾的所有字符,可以使用以下SQL語(yǔ)句:
SELECT SUBSTR('Hello World', 6) FROM DUAL;
執(zhí)行結(jié)果為:
World
4、使用負(fù)數(shù)作為起始位置
當(dāng)需要從字符串的末尾開(kāi)始提取子字符串時(shí),可以使用負(fù)數(shù)作為起始位置,要從字符串’Hello World’中提取最后5個(gè)字符,可以使用以下SQL語(yǔ)句:
SELECT SUBSTR('Hello World', -5) FROM DUAL;
執(zhí)行結(jié)果為:
World
5、使用小數(shù)作為起始位置和長(zhǎng)度
當(dāng)需要以小數(shù)作為起始位置或長(zhǎng)度時(shí),可以將它們轉(zhuǎn)換為整數(shù),要從字符串’Hello World’中提取第3.5個(gè)字符和第7.2個(gè)字符之間的子字符串,可以使用以下SQL語(yǔ)句:
SELECT SUBSTR('Hello World', 3, TRUNC(7.2 3.5)) FROM DUAL;
執(zhí)行結(jié)果為:
lo Wo
6、使用SUBSTR函數(shù)進(jìn)行數(shù)字轉(zhuǎn)換和格式化
除了提取子字符串外,SUBSTR函數(shù)還可以用于數(shù)字轉(zhuǎn)換和格式化,要將數(shù)字轉(zhuǎn)換為大寫字母表示的金額,可以使用以下SQL語(yǔ)句:
SELECT TO_CHAR(123456789, 'L999G999G999D99') AS amount FROM DUAL; -將數(shù)字轉(zhuǎn)換為大寫金額表示,保留兩位小數(shù)點(diǎn)后的數(shù)字。
執(zhí)行結(jié)果為:
AMOUNT 123,456,789.00
7、使用SUBSTR函數(shù)進(jìn)行日期和時(shí)間處理
SUBSTR函數(shù)還可以用于日期和時(shí)間處理,要從日期中提取月份和年份,可以使用以下SQL語(yǔ)句:
SELECT SUBSTR(TO_CHAR(SYSDATE, 'YYYY-MM-DD'), 1, 7) AS date FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為'YYYY-MM-DD'格式,然后提取前7個(gè)字符作為日期。
執(zhí)行結(jié)果為:
“`date 2022-08-12 00:00:00 AM -當(dāng)前日期和時(shí)間,注意,這里返回的是完整的日期和時(shí)間值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO_CHAR(SYSDATE, ‘YYYY-MM’) AS year_month FROM DUAL; -獲取當(dāng)前日期并轉(zhuǎn)換為’YYYY-MM’格式,只顯示年份和月份,執(zhí)行結(jié)果為:year_month 2022-08 -當(dāng)前年份和月份,注意,這里返回的是格式化后的日期值,如果只需要月份和年份,可以使用TO_CHAR函數(shù)進(jìn)行格式化,SELECT TO
分享標(biāo)題:oracle的substr用法
當(dāng)前地址:http://fisionsoft.com.cn/article/cojpiis.html


咨詢
建站咨詢
