我正在尝试在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%确定它会接受什么。
有什么想法吗?
答案 0 :(得分:2)
如果我理解正确,\ 0x1C表示ASCII值为0x1C(十进制28)的单个字符,对吗?
在这种情况下,请尝试:
INSTR(my_clob, CHR(28)||'GE'||CHR(29), 1, 1)