Regexp_replace 仅返回大写字符(忽略空格)

Posted

技术标签:

【中文标题】Regexp_replace 仅返回大写字符(忽略空格)【英文标题】:Regexp_replace returning only upper case characters (ignoring spaces) 【发布时间】:2021-11-27 21:17:48 【问题描述】:

例子:

列:名称 价值:莱昂纳多·迪卡普里奥

我只想提取大写字符:LDC 所以没有空格。

我有一个 DB2 数据库。我的建议是使用 regexp_substr。 一些帮助将不胜感激。

【问题讨论】:

我的建议是编写一个函数,获取字符串作为参数并返回大写字符并在选择中使用它,例如select a,b,function(Name) FROM x; 【参考方案1】:

试试这个

     Select  REGEXP_REPLACE( 'Leonardo Di Caprio', '[a-z ]', '' )
     From table;

检查测试输出

http://sqlfiddle.com/#!4/0b6773/2

【讨论】:

此选项不包括小写字符和空格。但包括特殊字符。您的解决方案中的“Iréne Juliana”将是“IéJ”。那是不对的。【参考方案2】:

试试这个:

SELECT 
  S
, REGEXP_REPLACE (' ' || S, '(?<! )[:upper:]|[^[:upper:]]', '')
FROM (VALUES 'Iréne Juliana', 'Iréne-Juliana Smith', 'Leonardo Di Caprio') T (S)

【讨论】:

谢谢马克!作品。但如果名字像“Iréne-Juliana Smith”,我只想要“IS”大写字母。你有解决这个问题的办法吗?所以排除“-Juliana”。 我已经编辑了答案。请检查。 谢谢,工作!最后一个问题:'Maríade los Angeles',有没有办法在你的答案中包含这个例子?所以我得到'MdlA'作为首字母?

以上是关于Regexp_replace 仅返回大写字符(忽略空格)的主要内容,如果未能解决你的问题,请参考以下文章

indexOf()忽略大小写方法

spark.sql() 的 REGEXP_REPLACE

Oracle 正则表达式函数-REGEXP_REPLACE 使用例子

如何在另一个字符串中查找字符串并忽略小写/大写? [复制]

正则表达式忽略特殊字符和大写字母[重复]

SearchView 忽略大写字母