SQL Server |使用sp_MSforeachdb将select查询的输出存储到临时表

时间:2016-06-22 16:49:08

标签: sql sql-server sql-server-2008 tsql

我想在所有以' ABC _%'开头的数据库上执行select查询。如果文件名由'?'组成。

为此目的写了下面的查询,但结果没有结果:

DECLARE @result TABLE (o varchar(250), h uniqueidentifier, i uniqueidentifier, k nvarchar(250))
INSERT INTO @result
EXEC sp_MSforeachdb 'Begin
USE [?]
IF DB_NAME() like ''ABC_%''
BEGIN
SELECT DB_NAME() as DatabaseName
      ,[FileId]
      ,[HRDataId]
      ,[FileName]
  FROM [?].[dbo].[UploadedFile]
where FileName like ''%?%''
END
End'
SELECT o
    ,h
    ,i
    ,k
    from @result;

但我知道有些数据库有一些'?'在fileName字段中。但结果总是空白。

此致 恩贾妮

1 个答案:

答案 0 :(得分:0)

是因为?在sp_MSforeachdb存储过程中被视为数据库名称。我逃避使用?使用: where FileName like ''%'' + CONVERT(VARCHAR(32), 0x3F) + ''%''