gpt4 book ai didi

sql - 在变量中使用连字符

转载 作者:行者123 更新时间:2023-12-03 09:24:16 27 4
gpt4 key购买 nike

DECLARE @query varchar(MAX)
DECLARE @dbinstance varchar(200)
DECLARE @dbname varchar(200)

SET @dbinstance = 'this-is-servername\databaseinstancename'
SET @dbname = 'databasename'

SET @query = 'select column1, column2 from +@dbinstance+'.'+@dbname+'


EXEC(@query)

我收到以下错误

Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '-'.

如果服务器名称有连字符,我们不能在变量中使用它吗?如果是这样,是否有解决方法,因为我不允许更改服务器名称,但必须在变量中使用它。

最佳答案

您必须这样引用您的标识符:

[this-is-servername\databaseinstancename]

例如

SET @query = 'select column1, column2 from ['+@dbinstance+'].['+@dbname+']'

如果您的标识符可能包含 ],您还需要对其进行转义:

REPLACE(@identifier, ']', ']]')

另一种方法是使用内置 QUOTENAME功能如评论中的 Damien_The_Unknowner 所示。

如果您的标识符不可信(例如用户输入),您必须转义它们以防止 SQL 注入(inject)。

关于sql - 在变量中使用连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24752206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com