oracle instr函数模式搜索

时间:2014-08-22 02:27:21

标签: oracle

我是oracle的新手,对Oracle的Instr功能感到困惑。 我在clob文本中搜索特殊的特殊字符形成(不是正则表达式)。 例如POS := INSTR(L_STR_DATA, '|^|', 1, 1);,但结果给了我' |'在文本中而不是' | ^ |',

然后我尝试用以下示例测试Instr函数。

SELECT SYSDATE, INSTR(TO_CHAR(SYSDATE), ':', 1, 1) FROM DUAL;

,结果为0。 任何人都可以解释.....

2 个答案:

答案 0 :(得分:0)

来自docs

  

无论position的值如何,返回值都相对于string的开头,并以字符表示。 如果搜索不成功(如果子字符串未出现在字符串的位置字符之后的出现次数),则返回值为0. [Emphasis mine]

没有":"字符串表示日期的字符。

编辑:因此,您的问题并不是Oracle的INSTR,实际上您的日期的默认字符代表是{ {1}}没有显示时间 - 只显示日期。 Here's对Oracle日期格式的引用。

答案 1 :(得分:0)

SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS',
       INSTR(TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'),':',1,1)
FROM DUAL

您的TO_CHAR()日期应具有一致结果的格式,因为NLS_DATE_FORMAT(默认日期格式)在所有会话中可能不相同。