为了清楚起见,我不能使用CLR UDF,SUBSTRING
和CHARINDEX
只是不要切割芥末。
我们有一个人工帐户管理系统,帐户是其他帐户的子帐户,更好地描述了here(还有表格:))
现在,假设我有一个帐户2.4.1.3
(显然,父级变为2.4.1
)并且想要提取'前缀'2.4.1
,以便我可以创建另一个兄弟帐户行中的下一个ID(假设2.4.1.4
)我将如何在T-SQL中拆分这样的字符串?
当然,类似的方式可以应用于儿童帐户,但这只是这个圣代的奶油糖果。
答案 0 :(得分:2)
尝试这样的事情:
DECLARE @accountno VARCHAR(50) = '2.4.1.3'
SELECT
REVERSE(@accountno),
CHARINDEX('.', REVERSE(@accountno)),
SUBSTRING(@accountno, 1, LEN(@accountno) - CHARINDEX('.', REVERSE(@accountno)))
SELECT
语句中的第三个元素应该是从您的帐号字符串中提取“前缀”2.4.1
的元素。
基本上,我所做的是反转字符串然后查找第一个出现的点('.'
) - 反向字符串中的第一个是原始字符串中的最后一个,这就是你想要的提取到。