Извлечение имен - PullRequest
       1

Извлечение имен

1 голос
/ 21 октября 2011

У меня есть строка с именем базы данных, именем схемы и именем процедуры,

'manged.dbo.gen_scri'

Я пытаюсь извлечь имя базы данных, имя схемы и процедуруназвание от него, поэтому я написал запрос, как это:

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

Есть ли лучший способ сделать это?

1 Ответ

4 голосов
/ 21 октября 2011

Ответ: PARSENAME(full_object_name, part) функция где part может быть: 1 => имя объекта, 2 => схема, 3 => имя базы данных, 4 => имя сервера:

SELECT   @Proc_Name = PARSENAME(@Name, 1)       
        ,@Schema    = PARSENAME(@Name, 2)       
        ,@DB        = PARSENAME(@Name, 3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...