开发者社区> 问答> 正文

无法使where子句与包含单引号的文本一起使用

我正在处理一些已保存到SQL Server数据库中的地理空间(字符串)数据,每当我的数据在要保存的字符串中包含单引号时,我都试图通过填充单引号来避免这种情况。尽管这使我可以将文本保存到数据库中,但是当我尝试使用where子句查找已对其应用了转义序列的位置时,where子句似乎并没有将它们拾取。

例如 SELECT * from tb_test WHERE Address = 'Abbey Gardens, St John''s Wood, London, NW8'; ,即使该记录存在,也会产生一个空表。我唯一能够做到这一点的方法是使用LIKE匹配不包含引号的文本模式(请参见下文)。 SELECT * from tb_test WHERE Address LIKE 'Abbey Gardens'

有什么理由可以解释为什么SQL无法使用完整的Address?如果可以的话,我该怎么办?

展开
收起
祖安文状元 2020-01-05 14:01:31 598 0
1 条回答
写回答
取消 提交回答
  • 引号在文字中是正确的,因此似乎实际的列值与文字值不匹配。这可能是由于尾随空格(例如,制表符,换行符等)引起的。检查列的原始二进制值是否存在意外字符:

    SELECT CAST(Address AS varbinary(MAX)), *
    FROM tb_test
    WHERE Address LIKE 'Abbey Gardens%';
    
    2020-01-05 14:01:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载