📅  最后修改于: 2023-12-03 15:20:15.296000             🧑  作者: Mango
在 SQL Server 中,QUOTENAME() 函数用于将标识符(如表名、列名等)括在方括号内以防止 SQL 注入攻击。
QUOTENAME( 'string' [ , 'quote_character' ] )
string
:需要用引号括起来的标识符(如表名、列名等)。quote_character
(可选):用于括起标识符的字符。默认情况下为方括号([
和 ]
)。示例 1:使用默认的方括号括起标识符。
SELECT QUOTENAME('SalesReport') AS QuotedName; -- 返回 [SalesReport]
示例 2:使用不同的字符括起标识符。
SELECT QUOTENAME('SalesReport', '"') AS QuotedName; -- 返回 "SalesReport"
示例 3:预防 SQL 注入攻击。
DECLARE @CustomerName nvarchar(50) = 'John''s Bike Shop';
DECLARE @SQL nvarchar(max) = N'SELECT * FROM Customers WHERE CustomerName = ' + QUOTENAME(@CustomerName, '''');
EXEC(@SQL);