在 Oracle SQL 中,沒有直接提供類似于 indexOf 和 lastIndexOf 的內(nèi)置函數(shù)。但可以通過使用其他字符串函數(shù)和子查詢來實現(xiàn)這兩個功能。
使用 INSTR 函數(shù)獲取字符串中第一次出現(xiàn)指定字符的位置。
使用 CASE 語句將位置為 0 的情況轉(zhuǎn)換為 NULL。
使用 NVL 函數(shù)將 NULL 值轉(zhuǎn)換為空字符串。
SELECT CASE WHEN INSTR(column_name, 'search_string') = 0
THEN NULL
ELSE INSTR(column_name, 'search_string')
END AS index_of
FROM table_name;
使用 INSTR 函數(shù)獲取字符串中最后一次出現(xiàn)指定字符的位置。
使用 CASE 語句將位置為 0 的情況轉(zhuǎn)換為 NULL。
使用 REVERSE 函數(shù)將字符串反轉(zhuǎn)。
使用 INSTR 函數(shù)獲取反轉(zhuǎn)字符串中第一次出現(xiàn)指定字符的位置。
使用 CASE 語句將位置為 0 的情況轉(zhuǎn)換為 NULL。
使用 NULLIF 函數(shù)將位置不為 NULL 的情況轉(zhuǎn)換為空字符串。
使用 LENGTH 函數(shù)獲取字符串長度。
使用 “-” 運算符將字符串長度減去反轉(zhuǎn)字符串的位置。
SELECT CASE WHEN INSTR(REVERSE(column_name), REVERSE('search_string')) = 0
THEN NULL
ELSE LENGTH(column_name) - INSTR(REVERSE(column_name), REVERSE('search_string')) + 1
END AS last_index_of
FROM table_name;
注意:以上代碼中的 column_name 和 table_name 需要替換為實際的列名和表名。‘search_string’ 需要替換為實際的搜索字符串。