【问题标题】:Syntax for Oracle SQL INSTR function when the pattern contains hex characters模式包含十六进制字符时 Oracle SQL INSTR 函数的语法
【发布时间】:2010-08-13 20:24:25
【问题描述】:

我正在尝试在 Oracle SQL 中编写一个查询来访问 CLOB 字段中的特定子字符串。

要使用 SUBSTR 函数,我需要使用 INSTR 函数在 CLOB 中找到一个起点。

CLOB 包含以十六进制字符分隔的 X12 数据。

要找到我的子字符串的起始偏移量,我想做这样的事情......

INSTR(my_clob, '\0x1CGE\0x1D', 1, 1)

..其中第二个参数是我的“模式”,是十六进制 1C,后跟字母 G 和 E,然后是十六进制 1D。

我已经尝试了所有可以通过 Google 找到的方法,但到目前为止没有任何效果。它要么因语法无效而失败,要么根本不返回任何内容。

对于 DBMS_LOB.INSTR(),模式与用于 LIKE 的模式不同。看起来它只需要一个字符串,而不是模式匹配表达式,尽管我不能 100% 确定它会接受什么。

有什么想法吗?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    如果我理解正确,\0x1C 代表一个 ASCII 值为 0x1C(十进制 28)的单个字符,对吗?

    在这种情况下尝试:

    INSTR(my_clob, CHR(28)||'GE'||CHR(29), 1, 1)

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2019-12-26
      • 2014-10-07
      • 2014-03-26
      • 2012-05-23
      • 2016-04-09
      • 1970-01-01
      • 2017-06-02
      • 2016-07-24
      相关资源
      最近更新 更多