在Codewars上巧妙地使用SUBSTRING,有人请plesae向我解释这是如何工作的吗? -Postgres

问题描述 投票:2回答:2

[请协助我解释编码员如何创建这个出色的解决方案,我将简要解释一下表格:

select * from people

返回值:

name
Anibal Dorothea Tromp IV

挑战以多种方式解决,但一种解决方案令我惊讶:

select
  substring(name, '^(.+)\s\S+\s\S+$') as name,
  substring(name, '^.+\s(\S+)\s\S+$') as first_lastname,
  substring(name, '^.+\s(\S+)$') as second_lastname
from people

返回结果:

name             first_lastname   second_lastname  
Anibal Dorothea  Tromp              IV

实际表中有更多行,有些具有1个名字,另一些具有2个名字。因此,面临的挑战是用名字(名字)来区分名字,名字是一个不同长度的单词,有时超过一个单词。

如果我查看有关子字符串的文档,则没有提及此方法,请向我解释他的出色解决方案是如何工作的,或者将我指向一个解释该解决方案某些组件的站点。

非常感谢,蒂姆

[请协助我解释编码器是如何创建此出色解决方案的,我将简要解释一下表格:select * from people返回值:name Anibal Dorothea Tromp IV挑战是...

sql postgresql substring
2个回答
0
投票

您要引用的这个特殊字符串称为正则表达式。正则表达式在许多RDBMS和编程语言中都可用。


0
投票

尽管您可以像这样使用substring() -并且有据可查–这似乎是split_part()的一个好用例:

© www.soinside.com 2019 - 2024. All rights reserved.