2017-02-09 41 views
-1

此存儲過程位於字符串變量中,我想檢索該名稱。從字符串檢索存儲過程名稱

CREATE PROCEDURE dbo.uspGetEmployeesTest2 
    @LastName nvarchar(50), 
    @FirstName nvarchar(50) 
AS 
    SET NOCOUNT ON; 

    SELECT 
     FirstName, LastName, Department 
    FROM 
     HumanResources.vEmployeeDepartmentHistory 
    WHERE 
     FirstName = @FirstName 
     AND LastName = @LastName 
     AND EndDate IS NULL; 
GO 

我想它如果頭看起來像這樣的工作事件:

CREATE PROCEDURE [dbo].[uspGetEmployeesTest2] 

我想獲得:uspGetEmployeesTest2

是否有任何圖書館這樣做呢?

+0

您可以使用正則表達式https://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex(v=vs.110).aspx – Serg

回答

0

您應該能夠使用正則表達式如下CREATE PROCEDURE (?:dbo|\[dbo\])\.\[*(\w+)\]*

見例如:https://www.myregextester.com/?r=7e17ea0b

更新處理由@JimL描述的情況: 您應該能夠使用正則表達式如下CREATE PROCEDURE (?:dbo\.|\[dbo\]\.)*\[*([a-zA-Z0-9_ -]+)\]*

請參閱示例:https://www.myregextester.com/?r=c4a81cb3

通過上述解決方案,您可能還需要.Trim() t刪除前導空白或尾隨空白。

+0

這是一個有效的SQL過程名稱:[My過程] 這可能會有所幫助:http://stackoverflow.com/questions/30151800/regular-expression-for-validating-sql-server-table-name –