昨天在項(xiàng)目中遇到了一個(gè)非常簡(jiǎn)單的問(wèn)題,需要把SQL Server數(shù)據(jù)庫(kù)中保存的一段路徑地址取出其文件名,但SQL Server又沒(méi)有現(xiàn)成的方法,最后在網(wǎng)上找到這樣的一個(gè)方法,原理是先將字符串反轉(zhuǎn),取出第一個(gè)/的位置,從頭進(jìn)行截取后再次反轉(zhuǎn)
sql語(yǔ)句
代碼如下:
reverse(substring(reverse(Path),1,charindex(‘/’,reverse(Path)) – 1))
SQL如何取出一個(gè)字符串中最后一個(gè)特殊字符右邊的字符,例如:10*20*300,怎樣得到300?
使用reverse配合charindex來(lái)實(shí)現(xiàn)。
reverse是把字符串倒置,然后通過(guò)charindex來(lái)獲取倒置之后第一個(gè)*的位置,然后使用substring函數(shù)進(jìn)行字符串截取,截取后再使用reverse倒置回來(lái)即可。
以下為例子
declare @str varchar(20)
set @str = ’10*20*300′
select reverse(substring(reverse(@str),1,charindex(‘*’,reverse(@str)) – 1))
結(jié)果是300
以上是SQLSERVER的語(yǔ)法。
ORACLE數(shù)據(jù)庫(kù)也有REVERSE函數(shù),不過(guò)SUBSTRING要改成SUBSTR,CHARINDEX函數(shù)要改成INSTR函數(shù)
SELECT reverse(substr(reverse(’10*20*300′),1,INSTR(reverse(’10*20*300′),’*’) – 1)) FROM DUAL;
結(jié)果是300