该字段包含特殊字符,如pipe,returns,*和( 例如:
Table Name: Employee
Field names: id, name
ID Name
01 Radhika N (MBA)*MCA*
02 Venu (BBA)
03 (MBA)Ananth
04 Visal **MCA**
现在我想要一个删除所有特殊字符的select语句,我的结果应该是
ID Name
01 RADHIKA N
02 VENU
03 ANANTH
04 VISHAL
Select id, upper(replace(replace(replace(replace(replace(replace(name,'|',' '),chr(10),' '),chr(13),' '),chr(9),' '), chr(42), ' '), chr(40), ' ')) as NAME
from employee
这将取出任何ascii特殊字符和* 但结果是:
ID Name
01 RADHIKA N (MBA) MCA
02 VENU (BBA)
03 (MBA) ANANTH
04 VISHAL MCA
我如何删除"(MBA)"来自名字?
答案 0 :(得分:3)
对于显示的示例数据,下面的查询将起作用。
select trim(upper(regexp_replace(name,'[\(|\*](.*)[\)|\*]','')))
from tbl
答案 1 :(得分:0)
如果我理解正确,您可以使用regexp_replace()
。我会分两步来处理这个问题:
select regexp_replace(regexp_replace(name, '[(][A-Z]+[)]', ''), '[^a-zA-Z ]', '')
第一个删除括号中的部分。第二个只保留字母数字值。