在Sybase DB中使用带有like子句的正则表达式

时间:2018-03-14 07:14:52

标签: sybase sybase-ase

当我点击下面的查询时,我得到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。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

  • 检查数据库结构中是否没有错误:运行 dbcc checkdb dbcc checkalloc 以查看数据中是否存在物理错误

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

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