【问题标题】:Using regex with like clause with Sybase DB在 Sybase DB 中使用带有 like 子句的正则表达式
【发布时间】:2023-04-02 11:40:01
【问题描述】:

当我点击以下查询时,我得到 1 行

SELECT * FROM servers WHERE Node='abc_deeh32q6610007'

但是,当我点击以下查询时,选择了 0 行

SELECT * FROM servers WHERE Node LIKE '%_deeh32q6610007'

我认为这可能是因为 _ 但我使用以下查询时看到的模式相同

SELECT * FROM alerts WHERE TicketNumber like '%979415' --> returns 0 rows
SELECT * FROM alerts WHERE TicketNumber='IN979415' --> returns 1 row

我正在使用 Sybase DB。

【问题讨论】:

  • 很奇怪。 TicketNumber的类型是什么?
  • TicketNumber 和 Node 的类型都是 2 这就是我在控制台执行 describe alertsdescribe servers 时看到的。

标签: sybase sap-ase


【解决方案1】:

这种错误不应该出现在健康的数据库中。

首先检查字符是否正确,并且您使用了正确的 % 字符代码。在计划文本中编写一个脚本,并使用 -i 选项直接从命令行运行,使用 isql 对其进行检查。

如果这无济于事并且您的问题仍然存在,那么您的数据库物理结构可能存在一些问题:

  • 检查您是否在数据库中正确配置了排序顺序:您可以使用 charset 工具重新加载字符集顺序。

  • 检查数据库结构是否没有错误:运行dbcc checkdbdbcc checkalloc查看数据是否没有物理错误 p>

  • 检查数据库错误日志中是否没有任何错误。数据库观察到的所有物理错误都应在此处记录。

如果这无济于事,请尝试使用数据副本在另一个表中重现相同的问题。然后在具有相同配置的另一台服务器上。尝试缩小问题范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多