c# - 为 T-SQL 字符串文字正确的字符串转义

标签 c# sql-server tsql

我想使用如下查询,我正在寻找准确的信息/链接以转义字符串

书名是 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 会变得太昂贵了一通电话。运行单个查询并返回级联的所有结果有助于节省网络资源。

最佳答案

SQL Server 无法识别 \r\n 序列,无论它是否转义。

如果你想匹配 BookTitle 中的 \r\n,你需要做这样的事情:

-- \r = CHAR(13)
-- \n = CHAR(10)
SELECT *
FROM Books
WHERE BookTitle IN ('Mars and Venus', 'Stack''s Overflow ' + CHAR(13) + CHAR(10))

关于c# - 为 T-SQL 字符串文字正确的字符串转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266863/

相关文章:

c# - LINQ 选择新的 KeyValuePair<T,List<T2>>

c# - 在 C# 中实现超时

java - 如何从列元数据中确定列大小是以字节为单位还是以字符为单位?

c# - 检查并比较 sql server 表中的列值

sql - 从sql联合中删除重复项

c# - 枚举作为字典键

c# - 如何从 GAC 加载最新版本的 dll

c# - 成功插入数据库后抛出消息,如果不成功则抛出错误消息

sql - 缺少索引系统名

sql-server - 当更新的值不是太长时,我怎么能得到 "String or binary data would be truncated"?