【问题标题】:Characters that must be escaped in T-SQLT-SQL 中必须转义的字符
【发布时间】:2012-05-15 14:48:13
【问题描述】:

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

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

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

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

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

感谢您的帮助

【问题讨论】:

  • 嗯?参数化查询有什么问题?
  • 它们在不同的框架中表现不同......不适合我
  • 那你应该解决这个问题。
  • 我们不能将它们与我们的传统中间层一起使用。

标签: sql sql-server tsql sql-server-2005


【解决方案1】:

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

如果您使用 LIKE 语句,请参阅此 SO 主题 Escape a string in SQL Server so that it is safe to use in LIKE expression

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

【讨论】:

  • 感谢 HackedByChinese,这是我唯一的确认!
  • 我第一次看到手动查询转义被比作拔出......哈哈。
  • 感谢 Apache Cayenne !
  • 如果确实唯一需要转义的是单引号(ascii 控制字符和 \0 呢?)那么使用或不使用参数化查询并不是那么重要,是吗?您可以在 15 分钟内编写自己的自定义参数化查询格式化程序,并在 15 分钟内正确转义(使用动态语言)。
  • 反斜杠 \ ?,在 MySql 中,我必须像单引号一样对其进行转义。
【解决方案2】:

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

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

顺便说一句,参数化查询没有错,但有时你想去 SQL 管理控制台,快速运行一个查询来查找。

【讨论】:

    【解决方案3】:

    不确定这是否准确。

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

    select * from xxxx where field like '%.%'   
    

    【讨论】:

    • 请不要破坏您的答案。如果您认为它不正确并想删除它,请点击帖子下方的“删除”链接。
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多