书山有路勤为径,学海无涯苦作程序猿
首先看下样例数据,FWF_DEF_001存在字符串拼接,现在需要将一行变成多行,变成下列方式
脚本实现
脚本模板
SELECT substring_index(substring_index(t.${fieldName},';', b.help_topic_id + 1), ';', -1) as result
FROM ${tableName} t
join mysql.help_topic b ON b.help_topic_id < (LENGTH(t.${fieldName}) - LENGTH(REPLACE(t.${fieldName}, ';', '')) + 1)
其中mysql.help_topic是mysql内置的表
tableName为指定表
fieldName为指定字段
真实脚本参考
SELECT t.BILL_CODE,substring_index(substring_index(t.FWF_DEF_001,';', b.help_topic_id + 1), ';', -1) as dim_code
FROM T_MACH_ACCOUNT_HTZ_DEF_001 t
join mysql.help_topic b ON b.help_topic_id < (LENGTH(t.FWF_DEF_001) - LENGTH(REPLACE(t.FWF_DEF_001, ';', '')) + 1)