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

案例: 要接受符合以下条件的人名:

  • 允许任何字母符号
  • 空间
  • 冲刺
  • 撇号
  • 口音坟墓
  • 已执行一些预计算以将名称存储在字符串“PERSON\u name”中

    逻辑:
    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 *' {