【发布时间】:2019-01-18 11:31:40
【问题描述】:
我有一个包含 SDK 名称和版本的字段,并且它不是标准化的,因此我可以轻松地提取名称和版本。这些是人为的值,但代表了我正在使用的可能值:
- JavaScript/2.3.4
- JavaScript/4.3.1
- Android4.6.5
- Android3.2.1
- Swift4.5.3
- 斯威夫特/3.1.1.5
如您所见,“/”的使用并不一致,我需要一种方法来一致地从数字中解析 alpha,以便最终得到如下两列:
JavaScript 2.3.4
JavaScript 4.3.1
Android 4.6.5
Android 3.2.1
Swift 4.5.3
Swift 3.1.1.5
我已经寻找了不同的方法来做到这一点,但我发现似乎没有什么能满足我的要求。
最终,我需要将其放入 Postgres SELECT 语句中,如下所示:
编辑
我认为 DISTINCT 关键字是不必要且令人困惑的。它最初是 COUNT/GROUP BY 查询的一部分,但为了简单起见,我只想分别列出包含三列的所有行:sdk、sdk_name 和 sdk_version。从那里我将使用答案中最好的解析公式来做我需要的事情。
SELECT sdk, [parse sdk name formula] as "sdk_name", [parse sdk version formula] as "sdk_version"
此外,我没有要在查询中提供的固定 SDK 列表,因此我不确定 with/as/values 策略是否适合我,但我不知道并且看起来很有用。不过,我想 with/values 可以只是另一个 SELECT 查询。
【问题讨论】:
-
对于所有回答我问题的人,非常感谢您的快速周转。我将尝试所有策略并回发结果并选择最佳答案。干杯!
标签: sql regex postgresql parsing