我读了this post关于将列名和表名作为变量。 我想要方括号包装列名和表名。我看到有些人这样做:
@sql = 'SELECT [' + @column_name + '] FROM ...'
我试图将方括号放入变量中:
CREATE PROCEDURE [dbo].[find_most_frequent]
@table_in VARCHAR,
@col_2 VARCHAR
AS
BEGIN
DECLARE @sql NVARCHAR(4000);
SET @sql =
--start of code
'SELECT' +
@col_2 +
' FROM ' + @table_in +
' GO'
--end of code
print @sql
EXEC SP_EXECUTESQL @sql
END
GO
EXEC [dbo].[find_most_frequent]
@table_in = '[[]dbo].[[]t1]'
,@col_2 = '[[]c1]'
GO
我已经使用[[]来转义方括号,如here所述。但它确实有效,@ sql是
SELECT[ FROM [ GO
有人可以帮忙吗?谢谢!
答案 0 :(得分:2)
varchar [(n | max)]
如果未在数据定义或变量声明语句中指定n,则默认长度为1.
答案 1 :(得分:1)
关于引用对象名称,SQL Server中有一个函数可以完全执行:quotename()。
但要小心,因为当输入超过128个字符时,函数有一个讨厌习惯,即返回c++
。引用对象和/或列名称时不会发生这种情况,但在其他情况下可能会触发。