我有下表。
+--------------------+-----+
|fardet_cd_fare_basis|part2|
+--------------------+-----+
| MEO00RIG| 00R|
| MEO00RIG| RIG|
| MEO00RIG| I|
+--------------------+-----+
我需要从“fartdet_cd_fare_basis”中提取链的第一部分,直到出现“part2”,例如:
+--------------------+-----+--------+
|fardet_cd_fare_basis|part2| num|
+--------------------+-----+--------+
| MEO00RIG| 00R| MEO|
| MEO00RIG| RIG| MEO00|
| MEO00RIG| I| MEO00RI|
+--------------------+-----+--------+
我正在使用Spark SQL,但我使用的是sql解决方案。有什么想法吗?
答案 0 :(得分:1)
我想我明白你想要什么。试试这个。
的 LiveDemo
强>
select fardet_cd_fare_basis,part2,
substr(
fardet_cd_fare_basis,
1,
instr(fardet_cd_fare_basis,part2)-1
) as der_sub
from your_table
输出
+----------------------+--------+---------+
| fardet_cd_fare_basis | part2 | der_sub |
+----------------------+--------+---------+
| MEO00RIG | (null) | (null) |
| MEO00RIG | O | ME |
| MEO00RIG | 00R | MEO |
| MEO00RIG | RIG | MEO00 |
| MEO00RIG | 00 | MEO |
| MEO00RIG | I | MEO00R |
| MEO00RIG | R | MEO00 |
| MEO00RIG | 00 | MEO |
+----------------------+--------+---------+
注意:如果第一列中不存在part2
,则输出中不会显示任何内容。此外,如果part2
为空,那么您将获得null
。如果需要,您可以单独处理它们。