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

例子:

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

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

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

【问题讨论】:

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

标签: sql db2 regexp-replace


【解决方案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'作为首字母?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2017-08-23
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 2012-09-25
相关资源
最近更新 更多