在" AS"之后获取T-SQL获取视图查询

时间:2016-08-08 07:17:40

标签: sql-server view

我有一个名称" _report_territories "

如果我在查询下面运行

EXEC sp_HelpText '_report_territories'

结果显示如下屏幕

enter image description here

问题:

如何在" 创建视图[dbo]之后获取视图查询。[_ report_territories] AS " ?

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:1)

sp_HelpText的结果放在临时表中,而不是将其作为字符串并获得所需内容

DECLARE @t TABLE (
    [Text] nvarchar(max)
)
DECLARE @sql nvarchar(max) =''

INSERT INTO @t 
EXEC sp_HelpText 'vCities'

SELECT @sql =@sql+ [Text]
FROM @t

SELECT SUBSTRING(@sql,1,CHARINDEX('AS',@sql)+ LEN('AS'))

会给你:

CREATE View vCities  AS 

注意:如果视图名称包含AS

,则解决方案可能无关紧要

答案 1 :(得分:0)

<强>解决方案:

DECLARE @viewDefiniton nvarchar(max)
DECLARE @viewName nvarchar(max)='_report_territories'
DECLARE @indexOfViewName int
DECLARE @firstASindex int

SELECT @viewDefiniton = VIEW_DEFINITION FROM INFORMATION_SCHEMA.Views where TABLE_NAME = @viewName

SELECT @indexOfViewName = CHARINDEX(@viewName,@viewDefiniton)
SELECT @viewDefiniton = SUBSTRING(@viewDefiniton, @indexOfViewName + LEN(@viewName), LEN(@viewDefiniton))
SELECT @firstASindex = CHARINDEX('as',LOWER(@viewDefiniton))

SELECT @viewDefiniton = SUBSTRING(@viewDefiniton, @firstASindex + 2, LEN(@viewDefiniton))
SELECT @viewDefiniton