【发布时间】:2021-03-29 16:16:52
【问题描述】:
我的 ASP.Net 应用程序接收上传的 Excel 文件,然后转换为 XML 以作为存储过程参数传递以进行处理。此文件包含许多通过文本匹配的条目以找到相应的值。
今天(在完美工作多年后)三个看似相同的值在文本匹配中导致混合结果。我只能举例说明:
- 第一个值是 Excel 中的原始值(从 电子表格)。
- 第二个值是 Web 应用程序的值 保存到 XML,并且是从探查器显示的原始值 参数值
- 第三个值是当前存在的值 在表格中
代码是从 SSMS 粘贴过来的:
SELECT SkillGroupTitle FROM tbl_SkillGroups WHERE SkillGroupTitle = N'Quality Assurance Instruction (QAI)'; -- pasted from Excel
SELECT SkillGroupTitle FROM tbl_SkillGroups WHERE SkillGroupTitle = N'Quality Assurance Instruction (QAI)'; -- pasted from xml
SELECT SkillGroupTitle FROM tbl_SkillGroups WHERE SkillGroupTitle = N'Quality Assurance Instruction (QAI)'; -- pasted from SQL table (existing value)
有人可以告诉这里发生了什么吗?所有值在视觉上看起来相同,但在 Excel 的入站值中明显有些东西不同。
更新
将这两个值粘贴到十六进制转换器中,确实有三个不同。
Excel 数据:
51 75 61 6c 69 74 79 a0 41 73 73 75 72 61 6e 63 65 a0 49 6e 73 74 72 75 63 74 69 6f 6e 20 28 51 41 49 29 0a
-- -- --
SQL 数据:
51 75 61 6c 69 74 79 20 41 73 73 75 72 61 6e 63 65 20 49 6e 73 74 72 75 63 74 69 6f 6e 20 28 51 41 49 29
有人可以在这里解释一下吗?
【问题讨论】:
-
嗯,很有趣。我将用调查结果更新问题(尽管我仍然不知道字符串中的这些差异是什么)
-
a0 是一个不间断的空格:en.wikipedia.org/wiki/Non-breaking_space。您需要先清理字符串,然后再将其发送以进行查询。
-
惊人的指点,谢谢。我让它与
REPLACE(N'Quality Assurance Instruction (QAI)', NCHAR(0x00A0), NCHAR(0x0020))匹配。如果可以,请迁移您的评论作为答案。
标签: sql-server excel tsql