Sql 如何在oracle中使用regexp\u replace在oracle中允许重音字符?
案例: 要接受符合以下条件的人名:Sql 如何在oracle中使用regexp\u replace在oracle中允许重音字符?,sql,oracle,Sql,Oracle,案例: 要接受符合以下条件的人名: 允许任何字母符号 空间 冲刺 撇号 口音坟墓 已执行一些预计算以将名称存储在字符串“PERSON\u name”中 逻辑:SUBSTR(REGEXP\u REPLACE(人名,[^A-Za-z.''-]+',''),0,50) 除重音字符外,几乎所有情况下都通过: 例如: 预期结果:cafè[即e`上方的符号不应被过滤掉] 实际结果:caf您可以使用: select SUBSTR(REGEXP_REPLACE('cafè-` t *'' {','[[:digi
SUBSTR(REGEXP\u REPLACE(人名,[^A-Za-z.''-]+',''),0,50)
除重音字符外,几乎所有情况下都通过:
例如:
预期结果:cafè[即e`上方的符号不应被过滤掉]
实际结果:caf您可以使用:
select SUBSTR(REGEXP_REPLACE('cafè-` t *'' {','[[:digit:]]') ,0,50) as "String"
from dual;
String
--------------
cafè-` t *' {
因为限制列表中没有关于数值表达式的信息。应该过滤掉什么?我的意思是原始字符串有什么区别?您好,您的列别名
为“string”
导致抛出错误:SQL错误:ORA-00907:缺少右括号
谢谢,@BarbarosÖzhan。最后一个疑问是:将重音元音作为正则表达式本身的一部分是一种不好的做法吗?从dual中选择substr(REGEXP|u REPLACE('cafè','[^A-Z | | A-Z | | | | | | | | A-Z | | | | | |Ӛӡ]+)、0,50);我想只允许重音严肃[]元音。不允许的,不允许的:不客气。我认为,如果您使用[[:digit:][]
,则无需明确列出所有重音字符,但我从您的上一个示例中不明白您是否要删除非字母字符……Hello@BarbarosÖzhan,此任务的另一个扩展是允许至少2个字符,最多50个字符。在substr()中,我取了0和50。所以我从字符串的开头开始,最多只能得到50个字符。有没有办法指定最小范围?因为使用SUBSTR(2,50)会跳过前几个字符,因为它们指定了起点。@Saiprasadshankar您能用一个例子解释一下您的意思吗?
select SUBSTR(REGEXP_REPLACE('cafè-` t *'' {','[[:digit:]]') ,0,50) as "String"
from dual;
String
--------------
cafè-` t *' {