如何在SQL列名中处理额外的方括号

时间:2017-04-20 06:45:27

标签: sql-server

我需要将列名作为[ID-ColumnName]作为列名依次传递给表。

例如:

Select [ID-ColumnName],[ID2-ColumnName2] FROM TABLE1 ORDER BY [ID-ColumnName]

问题是如果作为动态名称的ColumnName带有一个打开/关闭方括号,例如列[名称或列]名称

在这种情况下,SQL语句正在破坏;问题是我不知道有多少这样的开/关方括号可以来。

在我的方案中,必须使用方括号包装列名称。

请帮我处理这种情况。

1 个答案:

答案 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)

感谢您的所有帮助&建议。