Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何处理SQL列名中的额外方括号_Sql Server - Fatal编程技术网

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

Sql server 如何处理SQL列名中的额外方括号,sql-server,Sql Server,我需要将列名作为[ID ColumnName]作为列名传递给order by以用于表 例: 问题是,作为动态名称的ColumnName是否带有一个打开/关闭方括号,例如Column[name或Column]name 在这个场景中,SQL语句正在中断;问题是我不知道有多少这样的方括号可以打开/关闭 在我的场景中,必须将列名用方括号括起来 请帮我处理这个场景。全部 我能够解决下面给出的问题: 创建一个名称中包含方括号的表(您可以选择任意组合的打开/关闭方括号或单个打开/关闭方括号) 准备动态查询并使

我需要将列名作为[ID ColumnName]作为列名传递给order by以用于表

例:

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

在这个场景中,SQL语句正在中断;问题是我不知道有多少这样的方括号可以打开/关闭

在我的场景中,必须将列名用方括号括起来

请帮我处理这个场景。

全部

我能够解决下面给出的问题:

创建一个名称中包含方括号的表(您可以选择任意组合的打开/关闭方括号或单个打开/关闭方括号)

准备动态查询并使用@Damien_异信者建议的
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)