【发布时间】:2010-11-19 00:10:09
【问题描述】:
我想使用如下查询,我正在寻找确切的信息/链接来转义字符串
书名是 NVARCHAR(200)
SELECT * FROM Books WHERE BookTitle IN ('Mars and Venus', 'Stack''s Overflow \r\n')
问题: 是否只需要转义“'”,甚至 \r\n 也需要转义? MySql .Net Provider 公开了一个转义字符串值的方法,Sql Server .Net Provider 中是否有这样的功能?
我可能需要对字符串值进行等效的 C# 转义。
我知道参数化命令,但是为了最小化我的服务器到客户端的通信,并且我在 IN 子句中的值是从 20 到 50 的数量,为 BookTitle 中的每个值运行 SELECT 变得太昂贵了一通电话。而是运行单个查询并级联返回所有结果有助于节省网络资源。
【问题讨论】:
-
这是一个无关紧要的评论,但仍然很重要。如果您在管理工作室中为自己的查询执行此操作,那很好。但是,如果您是以编程方式 执行此操作 —构建您的查询字符串并在客户端程序中转义 — 你做错了。您需要一个参数化查询。
-
您关于需要为参数的每个值运行 1 次选择的建议是不正确的。使用表值参数或 XML 或使用逗号分隔字符串并在 SQL Server 端解压。这将是一个查询。 sommarskog.se/arrays-in-sql-2008.html
标签: c# sql-server tsql