20

我正在寻找必须在 ms sql server 中转义的特殊字符列表,但找不到我看到的关于建议使用参数化查询的类似问题的一个和大部分答案。我已经在做但是我正在使用的框架对我没有任何逃避。

因此,我想我会试一试,看看哪个失败了....我尝试了一个简单的查询

select * from x where value = '<characters>'

在这样的查询中,我尝试了几乎所有我能在键盘上找到的字符,它们似乎都可以工作......除了单引号......那个失败了。

因此,我想知道无效的字符列表,并且必须在 ms sql server - tsql 中转义,并且不想冒险只转义单引号而留下可能导致麻烦的其余部分

感谢你的帮助

4

3 回答 3

36

字符串中唯一需要转义的字符是单引号(用两个单引号一起完成)。否则,它是一个字符串,t-sql 不会再大惊小怪了。

如果您使用的是 LIKE 语句,请参阅此 SO 主题Escape a string in SQL Server,以便在 LIKE 表达式中安全使用

顺便说一句,任何不允许我使用参数的框架,对于我来说不能正确地逃避东西,都是一个硬停止。尝试手动清理字符串输入就像依赖拉出方法一样;最终它会得到你。

于 2012-05-07T03:16:29.280 回答
1

我只是想说_(下划线)也需要转义。

select * from Products where SomeColumn like 'FD[_]%'

顺便说一句,参数化查询没什么问题,但有时你想去 SQL 管理控制台,快速运行一个查询来找出一些东西。

于 2016-10-14T08:16:00.427 回答
0

不确定这是否准确。

%.其他通配符取决于查询,也可能需要转义。你在哪里寻找一个点。这将失败

select * from xxxx where field like '%.%'   
于 2016-08-22T14:49:06.480 回答