【发布时间】:2015-10-21 17:46:57
【问题描述】:
鉴于:
- 具有“ID”和“描述”列的表 tA
- “描述”是一个字符串列。
-
表格内容为:
ID ||说明
1 || “字符串 1”
2 || “字符串2”
3 || “字符串3”
如果我执行以下 SQL 查询:
"SELECT ID FROM tA WHERE Description = 'String2'" 它返回 2(如预期)
但是:
如果我执行以下 SQL 查询:
"SELECT ID FROM tA WHERE Description = 'String2'"(尾随空格)它也返回 2! (因为它是一个精确的比较,它应该返回 NONE)
如果我执行以下 SQL 查询:
"SELECT ID FROM tA WHERE Description = 'String2'"(以空格开头)它返回 NONE(如预期的那样)
你知道造成这种行为差异的原因是什么吗?
提前致谢。
【问题讨论】:
-
我不能代表缓存,但这是 SQL92 标准规定的数据库中的常见行为:在比较之前填充字符串,以便它们具有相同的长度 - 通常这意味着尾随空白被忽略,而前导空白则不被忽略。 (大概是为了方便使用固定宽度的字符类型)
标签: sql intersystems-cache trailing intersystems objectscript