如果我有一个字符串,其中包含用"/"字符(xxx ... xxx/xxx/xxxx)分隔的其他字符串,我怎样才能获得t-sql的最后一个和最后一个(最后一个)部分?它应该是charindex()和right()的某种组合.
Tom*_*lak 11
declare @s varchar(50);
set @s = 'aaaaa/bbbbb/ccccc/ddddd/eeeee'
/* last one: */
select
RIGHT(@s, CHARINDEX('/', REVERSE(@s)) - 1)
/* penultimate one */
select
RIGHT(
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s))),
CHARINDEX('/', REVERSE(
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s)))
)) - 1
)
Run Code Online (Sandbox Code Playgroud)
"最后一个"非常简单,无需解释.
"倒数第二个"基本上等于"最后一个",所有出现的@s替换为:
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s)))
Run Code Online (Sandbox Code Playgroud)
哪个产生 'aaaaa/bbbbb/ccccc/ddddd'
要检查字符串中是否有足够的斜杠使此表达式成功,您可以这样做
CASE WHEN LEN(@s) - LEN(REPLACE(@s, '/', '')) >= 2
THEN /* expression here */
ELSE /* error value here */
END
Run Code Online (Sandbox Code Playgroud)