2011-10-20 13 views
1

Iデータベース名、スキーマ名とあるProcdedure名を持つ文字列を持っている抽出名前

「manged.dbo.gen_scri」

Iからデータベース名、スキーマ名とProcdedure名を抽出しようとしていますそれ私はこのようなクエリを書いた:

DECLARE @Name VARCHAR(1000)= 'manged.dbo.gen_scri', 
@DB VARCHAR(100), 
@Schema VARCHAR(100), 
@Proc_Name VARCHAR(max) 

SELECT @DB=SUBSTRING(@Name,1,CHARINDEX('.',@Name)-1) 

SELECT @Schema=SUBSTRING(@Name,(CHARINDEX('.',@Name))+1,CHARINDEX('.',@Name,(LEN(@DB))+2)-((CHARINDEX('.',@Name))+1)) 

SELECT @Proc_Name=SUBSTRING(@Name,LEN(@DB)+LEN(@Schema)+3,100) 

SELECT @DB AS Database_Name,@Schema AS SchemaName,@Proc_Name AS Proc_Name 

はそれを行うための良い方法はありますか?

答えて

4

答えはpartができPARSENAME(full_object_name, part) functionです:1 =>オブジェクト名、2 =>スキーマ、3 =>データベース名、4 =>サーバー名:

SELECT @Proc_Name = PARSENAME(@Name, 1)  
     ,@Schema = PARSENAME(@Name, 2)  
     ,@DB  = PARSENAME(@Name, 3); 
+0

@Bodgan Sahlean恐ろしいはありがとうございました! – peter

関連する問題