WHERE子句中的OBJECT_ID删除特殊字符

时间:2014-08-08 14:21:44

标签: sql sql-server

我正在使用下面的查询来识别下拉列表的数据库;只要DatabaseName没有任何特殊字符(例如句号,逗号等),它就可以正常工作,但当然,我们确实希望包含这些字符。现在,当我自己运行Select语句时,它会正确返回所有表,但是当我添加WHERE子句时,它会丢失名称中带有标点符号的表。我确信OBJECT_ID中有一个错误,但我无法理解。

SELECT [name] AS DatabaseName FROM sys.databases 
WHERE OBJECT_ID ([name] + N'.[dbo].[tblInfo]', N'U') IS NOT NULL
ORDER BY DatabaseName ASC

2 个答案:

答案 0 :(得分:3)

怎么样:

SELECT [name] AS DatabaseName FROM sys.databases 
WHERE OBJECT_ID (N'[' + [name] + N'].[dbo].[tblInfo]', N'U') IS NOT NULL
ORDER BY DatabaseName ASC

答案 1 :(得分:1)

QUOTENAME

WHERE OBJECT_ID (QUOTENAME([name]) + N'.[dbo].[tblInfo]', N'U') IS NOT NULL

(同样,包含保留字符的模式/表名)