我想在所有以' 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字段中。但结果总是空白。
此致 恩贾妮
答案 0 :(得分:0)
是因为?在sp_MSforeachdb存储过程中被视为数据库名称。我逃避使用?使用:
where FileName like ''%'' + CONVERT(VARCHAR(32), 0x3F) + ''%''