如果我有一个由其他字符串组成的字符串,这些字符串以“/”字符分隔 (xxx...xxx/xxx/xxxx),我怎样才能得到最后一个和几乎最后一个(最后一个)部分t-sql?它可能应该是 charindex() 和 right() 的某种组合。
最佳答案
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
)
“最后一个”非常简单,无需解释。
“倒数第二个”基本上等于“最后一个”,所有出现的 @s
都替换为:
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s)))
产生 'aaaaa/bbbbb/ccccc/ddddd'
要检查字符串中是否有足够的斜杠让这个表达式成功,你可以这样做
CASE WHEN LEN(@s) - LEN(REPLACE(@s, '/', '')) >= 2
THEN /* expression here */
ELSE /* error value here */
END
关于sql - 如何从 T-SQL 中的 "/"分隔字符串中获取几乎最后一个子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1248512/