复杂的T-SQL子串

时间:2011-04-23 10:42:48

标签: substring sql-server-2008-r2

为了清楚起见,我不能使用CLR UDF,SUBSTRINGCHARINDEX只是不要切割芥末。

我们有一个人工帐户管理系统,帐户是其他帐户的子帐户,更好地描述了here(还有表格:))

现在,假设我有一个帐户2.4.1.3(显然,父级变为2.4.1)并且想要提取'前缀'2.4.1,以便我可以创建另一个兄弟帐户行中的下一个ID(假设2.4.1.4)我将如何在T-SQL中拆分这样的字符串?

当然,类似的方式可以应用于儿童帐户,但这只是这个圣代的奶油糖果。

1 个答案:

答案 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的元素。

基本上,我所做的是反转字符串然后查找第一个出现的点('.') - 反向字符串中的第一个是原始字符串中的最后一个,这就是你想要的提取到。