Sql oracle正则表达式问题
我一直在尝试查找不可打印的记录(即ASCII 32到127之间),下面我提到了,根据查询,它应该打印chr小于32或大于127的所有记录,但它不显示chr(160)的记录,而显示chr(10)的记录 插入到tq84\u比较中 价值观Sql oracle正则表达式问题,sql,regex,oracle11g,Sql,Regex,Oracle11g,我一直在尝试查找不可打印的记录(即ASCII 32到127之间),下面我提到了,根据查询,它应该打印chr小于32或大于127的所有记录,但它不显示chr(160)的记录,而显示chr(10)的记录 插入到tq84\u比较中 价值观 (101,“在线”chr(160)| chr(160)| chr(160)| chr(160)) 无法将Unicode硬空间与[:space:、[^[:print:]或\s模式匹配 您可以使用以下方法修剪字符串: 里面的空间是硬空间。^[[:space:]+将匹配字
(101,“在线”chr(160)| chr(160)| chr(160)| chr(160)) 无法将Unicode硬空间与
[:space:
、[^[:print:]
或\s
模式匹配
您可以使用以下方法修剪字符串:
里面的空间是硬空间。^[[:space:]+
将匹配字符串开头的所有ASCII空格和/或硬空格,[[:space:]+$
将匹配字符串结尾的所有ASCII空格字符和硬空格
如果要在[^[:print:]
中添加硬空间,则需要使用替代选项:
select regexp_replace(' some stuff ', '^([^[:print:]]| )+|([^[:print:]]| )+$', '') as result from dual
请参阅。160代码是硬空格,对吗?这是预期的行为,因为
[:print://code>匹配[\x20-\x7E]
、空格和所有其他可打印的ASCII字符。由于trim对chr(160)不起作用,我们如何删除它?您的意思是需要从条目的开始/结束处删除任何空格吗?
select regexp_replace(' some stuff ', '^[[:space:] ]+|[[:space:] ]+$', '') as result from dual
select regexp_replace(' some stuff ', '^([^[:print:]]| )+|([^[:print:]]| )+$', '') as result from dual