Sql server 如何处理SQL列名中的额外方括号
我需要将列名作为[ID ColumnName]作为列名传递给order by以用于表 例: 问题是,作为动态名称的ColumnName是否带有一个打开/关闭方括号,例如Column[name或Column]name 在这个场景中,SQL语句正在中断;问题是我不知道有多少这样的方括号可以打开/关闭 在我的场景中,必须将列名用方括号括起来 请帮我处理这个场景。全部 我能够解决下面给出的问题: 创建一个名称中包含方括号的表(您可以选择任意组合的打开/关闭方括号或单个打开/关闭方括号) 准备动态查询并使用@Damien_异信者建议的Sql server 如何处理SQL列名中的额外方括号,sql-server,Sql Server,我需要将列名作为[ID ColumnName]作为列名传递给order by以用于表 例: 问题是,作为动态名称的ColumnName是否带有一个打开/关闭方括号,例如Column[name或Column]name 在这个场景中,SQL语句正在中断;问题是我不知道有多少这样的方括号可以打开/关闭 在我的场景中,必须将列名用方括号括起来 请帮我处理这个场景。全部 我能够解决下面给出的问题: 创建一个名称中包含方括号的表(您可以选择任意组合的打开/关闭方括号或单个打开/关闭方括号) 准备动态查询并使
QUOTENAME()
函数;但是要确保QUOTENAME()
函数不应作为字符串给出;执行查询的post
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)
谢谢你的帮助和建议。你能写下你想要的代码吗看这里你在找什么?@Damien_异教徒:我已经试过了,但是在我的一些场景中SQL语句QUOTENAME('SQL')有效,在一些场景中它需要作为QUOTENAME(SQL)给出因此,我无法利用这一点,因为QUOTENAME()将从Dot-Net代码中传递
CREATE TABLE [dbo].[TestTable](
[OF-[Test [Name]]]]] [nvarchar](100) NULL,
[Name] [nvarchar](100) NULL
) ON [PRIMARY]
GO
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)