我正在处理一些已保存到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?如果可以的话,我该怎么办?
引号在文字中是正确的,因此似乎实际的列值与文字值不匹配。这可能是由于尾随空格(例如,制表符,换行符等)引起的。检查列的原始二进制值是否存在意外字符:
SELECT CAST(Address AS varbinary(MAX)), *
FROM tb_test
WHERE Address LIKE 'Abbey Gardens%';
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。