oracle中SQL列值中的隐藏字符
我在一个表的列中有一个值,不知何故在字符串的末尾有一些隐藏字符。我看不见它,也看不到它。绳子放在下面。我可以在这个字符串中看到的字符总数是25个,但是当我检查它显示为26的字符串的长度时。我尝试了修剪功能,但认为它可能是一个空间,但它不是。如何在oracle查询中从字符串中删除此类字符。实际上,我正在使用regexp_replace替换这个字符串的某些部分,但是由于这个问题,regex无法匹配字符串中的最后一个数字来替换它之前的所有内容 28/110/41492/171486/98122 这是我的正则表达式函数oracle中SQL列值中的隐藏字符,sql,regex,oracle,replace,trim,Sql,Regex,Oracle,Replace,Trim,我在一个表的列中有一个值,不知何故在字符串的末尾有一些隐藏字符。我看不见它,也看不到它。绳子放在下面。我可以在这个字符串中看到的字符总数是25个,但是当我检查它显示为26的字符串的长度时。我尝试了修剪功能,但认为它可能是一个空间,但它不是。如何在oracle查询中从字符串中删除此类字符。实际上,我正在使用regexp_replace替换这个字符串的某些部分,但是由于这个问题,regex无法匹配字符串中的最后一个数字来替换它之前的所有内容 28/110/41492/171486/98122 这是我
regexp_replace(trim(ATTRIBUTE_VALUE), '(^|.*?/)' || '98122' || '(/|$)', 'replaced' || '\2', 1, 1)
分两步执行此操作:
regexp_replace
(
regexp_replace(attribute_value, '[^[:print:]]'), -- printable string
'(^|.*?/)' || '98122' || '(/|$)', -- search pattern
'replaced' || '\2', -- replace pattern
1, -- position
1 -- occurrence
)
您可以使用
从…
中选择转储(属性值)查看字符代码。这是我在那里看到的:Typ=1 Len=26:50,56,47,49,49,48,47,52,49,52,57,50,47,49,55,49,52,56,54,47,57,56,49,50,50,2是的,\x02
=文本的开头(STX)在末尾。您可以将(/|$)
替换为”(/|[^[:print:][]*$)
,该字符将被匹配并捕获到组2中。四十和五十是数字的ASCII码。2不是。所以这是最后一个角色。您可以这样删除它:updatemytable set attribute\u value=substr(attribute\u value,1,25),其中…
。2表示最后一个字符??它是如何输入到列值的?我可以在regex_replace中使用这个substr吗?我需要在更新查询期间动态地执行此操作。