PostgreSQL提取首个分号前内容的实现方法求助
PostgreSQL提取首个分号前内容的实现方法
方法1:使用split_part函数(推荐,简洁高效)
split_part可以直接按指定分隔符拆分字符串并提取指定位置的片段,完美适配你的需求:
SELECT my_column, split_part(my_column, ';', 1) AS new_column FROM 你的表名;
针对你给出的示例数据,执行后new_column会返回dark roast Colombian coffee(注:你示例结果里的Columbian是笔误,原字段内容为Colombian)。如果字段中没有分号,该函数会直接返回整个字段内容,无需额外处理。
方法2:用substring+position(模拟Excel的Left+Find逻辑)
和Excel的思路对应,先定位分号的位置,再截取开头到该位置前的内容:
SELECT my_column, substring(my_column FROM 1 FOR position(';' IN my_column) - 1) AS new_column FROM 你的表名;
注意:如果字段中不存在分号,position会返回0,减1后会导致报错,因此需要增加判断逻辑处理这种情况:
SELECT my_column, CASE WHEN position(';' IN my_column) > 0 THEN substring(my_column FROM 1 FOR position(';' IN my_column) - 1) ELSE my_column END AS new_column FROM 你的表名;
内容的提问来源于stack exchange,提问作者George Nyi
相关产品推荐
相关产品推荐

