我有一个包含 varchar 的列。本列中的一些数据读取为主题标签(我已经检查过,两边都没有空格)。
当我无条件选择 * 时,我可以看到主题标签数据(在屏幕截图中)。
当我执行 select 来计算带有主题标签的行数时,我得到的返回值为 0。为什么查询无法找到
这是我的两个疑问
-- returns 0
select count(LastVisitNumber)
from qcpr_ARF_OC.Visit
where LastVisitNumber = '#';
-- returns several rows and some are just #.
select * from qcpr_ARF_OC.Visit;
我想知道哈希值是否需要转义,尽管 Caché 文档似乎没有提及任何相关信息...
where LastVisitNumber like '%\#%';
如果失败,这 4 个替代查询可能会有所帮助......只需替换
ORDER BY
子句即可。
SELECT LastVisitNumber,
CHAR_LENGTH(LastVisitNumber)
FROM qcpr_ARF_OC.Visit
WHERE LastVisitNumber NOT NULL
ORDER BY LastVisitNumber
# ORDER BY CHAR_LENGTH(LastVisitNumber)
# ORDER BY LastVisitNumber DESC
# ORDER BY CHAR_LENGTH(LastVisitNumber) DESC
您还可以尝试通过 ODBC(而不是 JDBC)进行查询,这样可以更轻松地生成可能揭示令人惊讶的细节的跟踪。
可能还有其他您看不到的字符。 我会从以下开始:
select count(LastVisitNumber)
from qcpr_ARF_OC.Visit
where LastVisitNumber like '%#%';
这假设
LastVisitNumber
实际上是一个字符串,尽管它的名字如此。
我明白了! (遇到同样的问题,网络搜索几乎没有帮助,但通过仅查询 #,然后查询 ######,我意识到 # 是 Access 用来搜索数字的通配符,因此要“转义” “通配符...)
将 # 括在方括号中。
尝试:其中 LastVisitNumber = '[#]';
-- returns 0
select count(LastVisitNumber)
from qcpr_ARF_OC.Visit
where LastVisitNumber = '[#]';
答案一直在 MS 那里:
在“从数据中检索通配符字符的语法”标题下
字符:数字符号#
所需语法: [#]
:) 快乐编码。