sql - 子字符串应该返回不同的值
问题描述
我有一个这样的名称列:
Name
------
Roger
RogerMan
Roger That
我需要一个查询,它会从列中返回不同的首字母。例如,在这种情况下,我想返回:
Name
-----
R
RM
RT
为此,我尝试了多种方法: 1. CASE 语句(到目前为止效果很好)。2. STRCMP 3. 子串
但是,我正在寻找一种使用 Postgres 中的函数的更动态的方法。
解决方案
您可以使用regexp_replace()
从字符串中删除所有非大写字母字符,如下所示:
regexp_replace(name, '[^A-Z]', '', 'g')
with t(name) as (
select 'Roger'
union all select 'RogerMan'
union all select 'Roger That'
)
select name, regexp_replace(name, '[^A-Z]', '', 'g') initials from t
姓名 | 缩写 :--------- | :-------- 罗杰 | R 罗杰曼 | R M 罗杰那 | 逆转录
推荐阅读
- javascript - Cron Job 每天运行多次
- python - 获取有关灰色图像中彩色像素的信息。蟒蛇,opencv
- c# - 如何检查C#中嵌套的JSON解析对象中是否存在键
- shell - gcloud 使用时间戳过滤器登录 CLI
- xcode - 如何隐藏我认为来自版本控制的这些蓝色标记?
- reactjs - React Bundle 给出错误:“类型错误:无法读取未定义的属性 'ReactCurrentOwner'”
- arrays - 视觉基本<>问题
- haskell - Haskell 递归函数
- c# - 如何检查计算机是否可以连接到 Active Directory?
- javascript - 使用键盘选择 onchange - 在焦点消失之前不要触发 onchange 事件?