我一直在寻找一个必须在ms sql server中转义的特殊字符列表,但找不到一个和我看到的类似问题的大部分答案建议使用参数化查询..我已经在做但是框架我正在使用并没有为我逃脱。
因此,我想我会尝试一堆,看看哪一个失败了......我尝试了一个简单的查询
select * from x where value = '<characters>'
在这样的查询中,我尝试了几乎所有我能在键盘上找到的角色,所有这些角色似乎都能正常工作......除了Singe Quote ......那个失败了。
因此,我想知道无效的字符列表,必须在ms sql server - tsql中进行转义,并且不想冒险只是逃避单引号并留下可能导致麻烦的其余部分
感谢您的帮助
答案 0 :(得分:33)
在字符串中需要转义的唯一字符是单引号(使用两个单引号一起完成)。否则,它是一个字符串,t-sql将不再对此大惊小怪。
如果您正在使用LIKE语句,请参阅此SO主题Escape a string in SQL Server so that it is safe to use in LIKE expression
顺便说一下,任何不让我使用参数的框架,对我来说都没有正确地逃脱,这是一个很难的选择。尝试手动清理字符串输入就像依赖拉出方法一样;最终它会得到你。
答案 1 :(得分:1)
不确定这是否准确。
%
和.
以及其他通配符(取决于查询)可能还需要转义。
你在哪里寻找一个点。这将失败
select * from xxxx where field like '%.%'
答案 2 :(得分:0)
我只是想说_(下划线)也需要转义。
从SomeColumn喜欢的产品中选择*&#39; FD [_]%&#39;
顺便说一下,参数化查询没什么问题,但有时你想进入SQL管理控制台并快速运行查询来查找内容。