例如,我有一个带有表名和类似模式的字符串:
[dbo].[statistical]
如何从该字符串中仅提取表名statistical
?
答案 0 :(得分:3)
这是PARSENAME
的用途:
SELECT PARSENAME('[dbo].[statistical]', 1)
SELECT PARSENAME('[adventureworks].[dbo].[statistical]', 1)
SELECT PARSENAME('[adventureworks]..[statistical]', 1)
SELECT PARSENAME('[statistical]', 1)
SELECT PARSENAME('dbo.statistical', 1)
-- all examples return 'statistical'
答案 1 :(得分:1)
您也可以尝试以下方法:
declare @s varchar(100) = 'asd.stadfa';
select reverse(substring(s, 1, charindex('.', s) - 1)) from (
select reverse(@s) s
) a
charindex
返回字符的第一个出现位置,因此您反转初始字符串以使最后一个点优先。然后,您只需要使用子字符串来提取反向字符串的第一部分,这就是您想要的。最后,您需要再应用reverse
一次来回退提取的字符串:)