来自另一个SQL的列的子字符串



我有以下表格:

+--------------------+-----+
|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

相关内容

  • 没有找到相关文章

最新更新