oracle中SQL列值中的隐藏字符

时间:2017-10-24 06:57:58

标签: sql regex oracle replace trim

我在表的列中有一个值,不知何故在字符串的末尾有一些隐藏的字符。我看不到它或删除它。字符串放在下面。我在这个字符串中可以看到的总字符数为25,但是当我检查它显示为26的字符串的长度时,我尝试了TRIM函数,但认为它可能是一个空格,但事实并非如此。如何在oracle查询中从字符串中删除这种字符。实际上,我使用regexp_replace来替换此字符串的某些部分,但由于此问题,正则表达式无法匹配字符串中的最后一个数字以替换它之前的所有内容。

28/110/41492/171486/98122

这是我的正则表达式函数

regexp_replace(trim(ATTRIBUTE_VALUE), '(^|.*?/)' || '98122' || '(/|$)', 'replaced' || '\2', 1, 1)

1 个答案:

答案 0 :(得分:1)

分两步完成:

  1. 删除所有不可打印的字符
  2. 应用您的替换模式
  3. 这是:

    regexp_replace
    (
      regexp_replace(attribute_value, '[^[:print:]]'), -- printable string
      '(^|.*?/)' || '98122' || '(/|$)', -- search pattern
      'replaced' || '\2',  -- replace pattern
      1, -- position
      1 -- occurrence
    )