【问题标题】:Select all where hashtag isn't working选择所有标签不起作用的地方
【发布时间】:2016-10-19 13:01:25
【问题描述】:

我有一个包含 varchar 的列。此列中的一些数据读作标签(我检查过,两边都没有空格)。

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

当我进行选择以计算带有主题标签的行时,我得到的返回值为 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代码
  • 我假设如果您在 where 子句中使用 1167900114 会返回一行?并且只有当您尝试使用 # 进行过滤时它才会失败?
  • 刚刚做到了,你是对的,当我在 where 子句中输入一个现有的访问号码时,我得到的回报是 1。
  • 正如您所说,您正在使用 Caché。但是使用一些用于 sql 的第 3 软件。我认为您应该在 System ManagementPortal 中检查 Caché 端

标签: sql jdbc intersystems-cache dbeaver


【解决方案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 结果。我的心都炸了。我已经使用类似的订购方法获得了我需要的结果,但我仍然想深入了解。
【解决方案2】:

可能还有其他你看不到的字符。我会开始:

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

这假定 LastVisitNumber 实际上是一个字符串,尽管它的名字。

【讨论】:

  • 我试过了,仍然返回 0 个结果。是的,我检查了表属性,它是一个 varchar,而不是一个 int 列。
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多