Aka*_*ava 7 c# t-sql sql-server
我想使用如下查询,我正在寻找转义字符串的确切信息/链接
BookTitle是NVARCHAR(200)
SELECT*FROM Books WHERE BookTitle IN('Mars and Venus','Stack'的溢出\ r \n')
问题:是否只需要转义"'",甚至还需要转义\ r \n?MySql .Net Provider公开了一个转义字符串值的方法,Sql Server .Net Provider中是否有这样的函数?
我可能需要C#等效转义为字符串值.
我知道参数化命令,但是为了最小化我的服务器到客户端的通信,并且IN子句中的值在20到50之间,在一次调用中为BookTitle的每个值运行SELECT会变得太昂贵.而是运行单个查询并返回所有级联结果有助于节省网络资源.
SQL Server无法识别\r\n序列,无论是否已转义.
如果你想匹配\r\nin,你需要做这样的事情BookTitle:
-- \r = CHAR(13)
-- \n = CHAR(10)
SELECT *
FROM Books
WHERE BookTitle IN ('Mars and Venus', 'Stack''s Overflow ' + CHAR(13) + CHAR(10))
Run Code Online (Sandbox Code Playgroud)
除了引号或换行符之外,还有更多的东西需要转义。如果有二进制输入(由黑客)怎么办?最好使用PreparedStatement(在java中)或目标语言中的任何其他等效项。Java 示例:
PreparedStatement ps = con.prepareStatement("SELECT * FROM Books WHERE BookTitle IN (?, ?)");
ps.setString(1, "Mars and Venus");
ps.setString(2, "Stack's Overflow
and
");
ResultSet rs = ps.executeQuery();
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7472 次 |
| 最近记录: |