2013-08-28 41 views
3

鑑於以下字符串之一(其代表在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

任何想法? 我在這裏錯過了任何可能的表示嗎?

+0

語義上,my-Table.request','dbo.my-Table.request'和'[dbo] .my-Table.request'的表名是:'request'('my-Table'是架構名稱) –

+0

您的第一個,第三個和第五個示例是** not **指定在SQL中使用的名爲my-Table.request的表的有效方法。如果包含句號('.'),則* *可以引用該名稱(通過'[]'或'「」'')。 –

+1

在編輯了四個示例之後,示例1仍然不能表示指定名爲'my-Table.request'的表的有效方法。 –

回答

2

很簡單通過在TSQL PARSENAME

PARSENAME(@x, 1) 

隨着你的編輯,你想讓它在C#中,你基本上要它在C#中從頭開始編寫,由.[]令牌化。 AFAIK沒有預先設定的執行方式爲您執行此操作。

2

如果你在SQL端執行此操作,則可以使用PARSENAME函數來完成此操作。

E.g. PARSENAME(x,1)返回對象(在這種情況下是表格)名稱。 PARSENAME(x,2)將返回架構等

-1

你可以使用下面的查詢:

USE MYDB GO SELECT * FROM SYS.TABLES GO

請注意: MYDB是數據庫名稱