选择所有主题标签不起作用的地方

问题描述 投票:0回答:3

我有一个包含 varchar 的列。本列中的一些数据读取为主题标签(我已经检查过,两边都没有空格)。

当我无条件选择 * 时,我可以看到主题标签数据(在屏幕截图中)。

enter image description here

当我执行 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;
sql jdbc intersystems-cache dbeaver
3个回答
1
投票

我想知道哈希值是否需要转义,尽管 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)进行查询,这样可以更轻松地生成可能揭示令人惊讶的细节的跟踪。


0
投票

可能还有其他您看不到的字符。 我会从以下开始:

select count(LastVisitNumber) 
from qcpr_ARF_OC.Visit
where LastVisitNumber like '%#%';

这假设

LastVisitNumber
实际上是一个字符串,尽管它的名字如此。


0
投票

我明白了! (遇到同样的问题,网络搜索几乎没有帮助,但通过仅查询 #,然后查询 ######,我意识到 # 是 Access 用来搜索数字的通配符,因此要“转义” “通配符...)

将 # 括在方括号中。

尝试:其中 LastVisitNumber = '[#]';

-- returns 0
select count(LastVisitNumber) 
from qcpr_ARF_OC.Visit
where LastVisitNumber = '[#]';

答案一直在 MS 那里:

https://support.microsoft.com/en-us/office/use-wildcards-in-queries-and-parameters-in-access-ec057a45-78b1-4d16-8c20-242cde582e0b

在“从数据中检索通配符字符的语法”标题下

字符:数字符号#
所需语法: [#]

:) 快乐编码。

© www.soinside.com 2019 - 2024. All rights reserved.