T-SQL子字符串Regex



我在提取子字符串时遇到问题。我正在数据库中记录一些SQL查询,需要对其进行筛选。

可能的字符串看起来像以下2个示例:

1. [DatabaseName].[dbo].[TableName$TableExtra]
2. "DatabaseName".dbo."TableName$TableExtra"

我试过这个:

DECLARE @c AS NVARCHAR(MAX) =
'
"DatabaseName".dbo."TableName$TableExtra"
'
SELECT 
SUBSTRING(SUBSTRING(@c, PATINDEX('%"DatabaseName".dbo."%', @c) + 20, 100), 1,
PATINDEX('%"%', SUBSTRING(@c, PATINDEX('%"DatabaseName".dbo."%', @c) + 20, 100)) - 1)

这只适用于第二个例子,但适用于第一个例子。

有人能帮助我如何编写适用于两个样本的过滤器吗?

祝度过美好的一天

如果您想提取表名等,可以使用PARSENAME((:

DECLARE @c AS NVARCHAR(MAX) ='"DatabaseName".dbo."TableName$TableExtra"'
SELECT PARSENAME(@c, 1) TableName
,       PARSENAME(@c, 2) SchemaName
,       PARSENAME(@c, 3) DatabaseName

结果:

+----------------------+------------+--------------+
|      TableName       | SchemaName | DatabaseName |
+----------------------+------------+--------------+
| TableName$TableExtra | dbo        | DatabaseName |
+----------------------+------------+--------------+

最新更新