我需要将列名作为[ID-ColumnName]作为列名依次传递给表。
例如:
Select [ID-ColumnName],[ID2-ColumnName2] FROM TABLE1 ORDER BY [ID-ColumnName]
问题是如果作为动态名称的ColumnName带有一个打开/关闭方括号,例如列[名称或列]名称
在这种情况下,SQL语句正在破坏;问题是我不知道有多少这样的开/关方括号可以来。
在我的方案中,必须使用方括号包装列名称。
请帮我处理这种情况。
答案 0 :(得分:0)
所有
我能够解决下面给出的问题:
创建一个名称中带有方括号的表格(您可以选择打开/关闭括号的任意组合或单个打开/关闭)。
CREATE TABLE [dbo].[TestTable](
[OF-[Test [Name]]]]] [nvarchar](100) NULL,
[Name] [nvarchar](100) NULL
) ON [PRIMARY]
GO
准备动态查询并使用@Damien_The_Unbeliever建议的QUOTENAME()
函数;但要确保QUOTENAME()
函数不应该以字符串形式给出;执行查询的帖子。
DECLARE @orderBy NVARCHAR(MAX),@sql NVARCHAR(MAX)
SET @orderBy = N' ORDER BY '+QUOTENAME('OF-[Test [Name]]')+' ASC'
SET @sql=N'select '+QUOTENAME('OF-[Test [Name]]')+' from TestTable'
--PRINT(@sql +@orderBy)
EXEC(@sql +@orderBy)
感谢您的所有帮助&建议。