我有以下表格:
+--------------------+-----+
|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解决方案。什么好主意吗?
我想我明白你想要什么。试试这个。
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
。