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 仅返回大写字符(忽略空格)的主要内容,如果未能解决你的问题,请参考以下文章