Ant*_*apa 31 sql sql-server url split
我有一个包含这个值的表:
Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx
OurStory/MeettheFoodieandtheMD.aspx
TheFood/OurMenu.aspx
Run Code Online (Sandbox Code Playgroud)
我想得到这个
Diet.aspx
MeettheFoodieandtheMD.aspx
OurMenu.aspx
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
jaz*_*ato 48
在SQL中执行此操作的方法:
SELECT SUBSTRING( string , LEN(string) - CHARINDEX('/',REVERSE(string)) + 2 , LEN(string) ) FROM SAMPLE;
Run Code Online (Sandbox Code Playgroud)
JSFiddle http://sqlfiddle.com/#!3/41ead/11
Joh*_*Woo 10
SELECT REVERSE(LEFT(REVERSE(columnName), CHARINDEX('/', REVERSE(columnName)) - 1))
FROM tableName
Run Code Online (Sandbox Code Playgroud)
ORHER SOURCE(s)
小智 10
尝试这个。更容易了。
SELECT RIGHT(string, CHARINDEX('/', REVERSE(string)) -1) FROM TableName
Run Code Online (Sandbox Code Playgroud)
请试试:
select url,(CASE WHEN CHARINDEX('/', url, 1)=0 THEN url ELSE RIGHT(url, CHARINDEX('/', REVERSE(url)) - 1) END)
from(
select 'Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx' as url union
select 'OurStory/MeettheFoodieandtheMD.aspx' as url union
select 'MeettheFoodieandtheMD.aspx' as url
)xx
Run Code Online (Sandbox Code Playgroud)
小智 5
SELECT REVERSE ((
SELECT TOP 1 value FROM STRING_SPLIT(REVERSE('Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx'), '/')
)) AS fName
Result: Diet.aspx
Run Code Online (Sandbox Code Playgroud)
标准STRING_SPLIT不允许取最后一个值。
诀窍是REVERSE在用 拆分之前反转字符串 ( ) STRING_SPLIT,从末尾获取第一个值 (TOP 1 value ),然后需要再次反转结果 ( REVERSE) 以恢复原始字符序列。
这是使用 SQL 表时的常用方法:
SELECT REVERSE ((
SELECT TOP 1 VALUE FROM STRING_SPLIT(REVERSE(mySearchString), '/')
)) AS myLastValue
FROM myTable
Run Code Online (Sandbox Code Playgroud)
小智 5
一种稍微更紧凑的方法(类似于 ktaria 的答案,但在 SQL Server 中)是
SELECT TOP 1 REVERSE(value) FROM STRING_SPLIT(REVERSE(fullPath), '/') AS fileName
Run Code Online (Sandbox Code Playgroud)