C# 如何获取表/视图名称(即删除架构前缀)

C# 如何获取表/视图名称(即删除架构前缀),c#,sql,tsql,C#,Sql,Tsql,给定以下表示SQL Server中表/视图名称的字符串之一: var x = "[my-Table.request]"; var x = "[dbo].[my-Table.request]"; var x = "dbo.[my-Table.request]"; 我想通过C代码获取表名:my-table.request 有什么想法吗? 我是否错过了任何可能的表述?非常简单地通过TSQL中的PARSENAME: 如果要在C中编辑它,基本上必须用C从头开始编写,并通过.,[,]标记化。好吧,没有预

给定以下表示SQL Server中表/视图名称的字符串之一:

var x = "[my-Table.request]"; 
var x = "[dbo].[my-Table.request]";
var x = "dbo.[my-Table.request]";
我想通过C代码获取表名:my-table.request

有什么想法吗? 我是否错过了任何可能的表述?

非常简单地通过TSQL中的PARSENAME:


如果要在C中编辑它,基本上必须用C从头开始编写,并通过.,[,]标记化。好吧,没有预先封装好的实现可以为您实现这一点。

如果您是在SQL端实现这一点,那么就有一个函数可以实现这一点


例如,PARSENAMEx,1返回本例中的对象表名。PARSENAMEx,2返回模式等。

您可以使用以下查询:

使用MyDB 去 挑选* 从系统表 去

请注意:
MyDB是您的数据库名称

从语义上讲,是my-table.request、dbo.my-table.request和[dbo]的表名。my-table.request是:request my table是架构名称您的第一个、第三个和第五个示例不是在SQL中指定名为my-table.request的表的有效方法。您必须按[]引用名称,或者如果名称中包含句点..在编辑了四个示例后,示例一仍然不能代表指定名为my-table.request的表的有效方法。正如我在第一条注释中提到的,可以用它代替[和],以实现相同的引用效果。所以它类似于\my table.request\;在您的C代码中
PARSENAME(@x, 1)