sql-server - 如何转义列别名中的方括号?
问题描述
以下产生错误:
SELECT 1 AS [dada[daa]]
消息 105,级别 15,状态 1,第 190 行字符串 'dada[daa]' 后面的未闭合引号。
消息 102,级别 15,状态 1,第 190 行“dada[daa]”附近的语法不正确。
如果我在列别名中有方括号,我可以使用这样的引号:
SELECT 1 AS 'dada[daa]'
但是我正在构建一些复杂的动态 T-SQL 语句,并且每个列别名都用方括号括起来,如果别名包含括号,则使用引号会使事情变得有点困难。
那么,有没有办法以某种方式逃避这些括号?
解决方案
您需要将它们加倍,就像单引号 ( '
) 一样:
SELECT *
FROM [My]]Table];
不过,您只需要使用右括号来执行此操作,而无需使用左括号。例如:
SELECT *
FROM [My[Table];
然而,基于此声明“但我正在构建一些复杂的动态 T-SQL 语句,并且每个列别名都用方括号括起来,如果别名包含括号,则使用引号会使事情变得更难一些。” 好像您正在做类似的事情'... FROM [' + @TableName + '] ...'
;不。使用QUOTENAME
:'... FROM ' + QUOTENAME(@TableName) + '...'
。
QUOTENAME
正确引用和转义您的变量。因此,对于 value '[MyTable]'
,它将返回'[[MyTable]]]'
。它还有第二个可选参数,可用于引用带有其他标识符的输入字符串。例如,假设变量@String
的值为“Don't”,则QUOTENAME(@String, '''')
返回'Don''t'
.
推荐阅读
- r - 在基本图形R中围绕特定面板绘制一个矩形
- c# - 如何使用字段 ID 从 SQL Server DB 获取字段名
- sharepoint - 自定义人员选取器未显示 SharePoint 组的结果,其中用户是使用 SPD 工作流添加的
- azure-data-lake - 我们如何将数据插入到表中?
- azure-active-directory - 支持 SAML 4.0 的 Azure AD 能否与支持 SAML 2.0 的 SP 握手
- php - 如何在 SQL 查询的一个迭代中添加一个空格而不影响我的 PHP 中的另一个
- ios - 应用的 Info.plist 必须包含一个 NSPhotoLibraryUsageDescription 键和一个字符串值,向用户解释应用如何使用这些数据
- swift - UITableView/UICollectionView 委托中的 iOS 13 NSDiffableDataSourceSnapshot
- swift - 如何从 UIDragItem 中检索 UIImage?
- javascript - 屏蔽文本输入以验证 MM/YY jquery-mask-plugin