鑑於以下字符串之一(其代表在SQL Server中的表/視圖名稱):如何獲得表/視圖名稱(即刪除架構前綴)
var x = "[my-Table.request]";
var x = "[dbo].[my-Table.request]";
var x = "dbo.[my-Table.request]";
我想獲得表名(by C#code):my-Table.request
任何想法? 我在這裏錯過了任何可能的表示嗎?
鑑於以下字符串之一(其代表在SQL Server中的表/視圖名稱):如何獲得表/視圖名稱(即刪除架構前綴)
var x = "[my-Table.request]";
var x = "[dbo].[my-Table.request]";
var x = "dbo.[my-Table.request]";
我想獲得表名(by C#code):my-Table.request
任何想法? 我在這裏錯過了任何可能的表示嗎?
很簡單通過在TSQL PARSENAME
:
PARSENAME(@x, 1)
隨着你的編輯,你想讓它在C#中,你基本上要它在C#中從頭開始編寫,由.
,[
,]
令牌化。 AFAIK沒有預先設定的執行方式爲您執行此操作。
如果你在SQL端執行此操作,則可以使用PARSENAME
函數來完成此操作。
E.g. PARSENAME(x,1)
返回對象(在這種情況下是表格)名稱。 PARSENAME(x,2)
將返回架構等
你可以使用下面的查詢:
USE MYDB GO SELECT * FROM SYS.TABLES GO
請注意: MYDB是數據庫名稱
語義上,my-Table.request','dbo.my-Table.request'和'[dbo] .my-Table.request'的表名是:'request'('my-Table'是架構名稱) –
您的第一個,第三個和第五個示例是** not **指定在SQL中使用的名爲my-Table.request的表的有效方法。如果包含句號('.'),則* *可以引用該名稱(通過'[]'或'「」'')。 –
在編輯了四個示例之後,示例1仍然不能表示指定名爲'my-Table.request'的表的有效方法。 –