我在表名中使用[
,]
和'
时遇到一些问题/问题。
例如,为什么这个工作
SELECT TOP 1000 [O'test]
,[NumeNOU]
FROM [dbname].[dbo].[O'conor]
而这不是
use dbname
GO
DECLARE @COUNT int
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [dbname].[dbo].[O'conor]
PRINT @COUNT
错误
消息4104,级别16,状态1,行4多部分标识符 " dbname.dbo.O'康纳"无法受约束。
或者
use dbname
GO
DECLARE @COUNT int
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [O'conor]
PRINT @COUNT
错误
消息207,级别16,状态1,行4无效的列名称''' conor'。
但是像这样工作
use dbname
GO
DECLARE @COUNT int
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'O''conor'
PRINT @COUNT
答案 0 :(得分:0)
1 + 2
use dbname
GO
DECLARE @COUNT int
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [dbname].[dbo].[O'conor]
PRINT @COUNT
use dbname
GO
DECLARE @COUNT int
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [O'conor]
PRINT @COUNT
由于TABLE_NAME需要sysname
值,但您提供了一个标识符,因此Thess查询无效。
3
use dbname
GO
DECLARE @COUNT int
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'O''conor'
PRINT @COUNT
此查询有效,因为您提供的值为sysname
。
附注:使用仅包含字母,数字和下划线的对象名称会更好,这样您就不需要使用它们周围的方括号。