|
Archives of the TeradataForumMessage Posted: Wed, 09 May 2007 @ 15:23:55 GMT
Problem: There is a string column that has data like A_B_C_D_E_F_G_H_I_J_K A A_B A_B_C Here the delimiter is underscore '_' We mean "a part" as that part of string which is delimited by '_'. (In first string A is a part, B is a part, C is a part and so on) Requirement is to split the string into separate parts (Maximum of 11 parts and Minimum of 1 part) depending on the available string. The code that I have is not working since it errors saying "3712: Insufficient memory for Plastic Steps for this request" For this error DBAs are saying stepssegmentsize field is already set at maximum value. Does anyone have already worked on similar requirement earlier?? I am just looking whether if anyone has already resolved such a thing, I can reuse. CODE that I tried: sel rt_dsc ,POSITION('_' IN rt_dsc) FIRST_POS ,CASE WHEN FIRST_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(rt_dsc, 1, FIRST_POS)) ELSE rt_dsc END AS FIRST_PART ,SUBSTR(rt_dsc, FIRST_POS+1) EXCPT_1_RT_DSC ,POSITION('_' IN EXCPT_1_RT_DSC) SECOND_POS ,CASE WHEN SECOND_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_1_RT_DSC, 1, SECOND_POS)) WHEN FIRST_POS > 0 AND SECOND_POS = 0 THEN EXCPT_1_RT_DSC ELSE ' ' END AS SECOND_PART ,SUBSTR(EXCPT_1_RT_DSC, SECOND_POS+1) EXCPT_2_RT_DSC ,POSITION('_' IN EXCPT_2_RT_DSC) THIRD_POS ,CASE WHEN THIRD_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_2_RT_DSC, 1, THIRD_POS)) WHEN SECOND_POS > 0 AND THIRD_POS = 0 THEN EXCPT_2_RT_DSC ELSE ' ' END AS THIRD_PART ,SUBSTR(EXCPT_2_RT_DSC, THIRD_POS+1) EXCPT_3_RT_DSC ,POSITION('_' IN EXCPT_3_RT_DSC) FOURTH_POS ,CASE WHEN FOURTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_3_RT_DSC, 1, FOURTH_POS)) WHEN THIRD_POS > 0 AND FOURTH_POS = 0 THEN EXCPT_3_RT_DSC ELSE ' ' END AS FOURTH_PART ,SUBSTR(EXCPT_3_RT_DSC, FOURTH_POS+1) EXCPT_4_RT_DSC ,POSITION('_' IN EXCPT_4_RT_DSC) FIFTH_POS ,CASE WHEN FIFTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_4_RT_DSC, 1, FIFTH_POS)) WHEN FOURTH_POS > 0 AND FIFTH_POS = 0 THEN EXCPT_4_RT_DSC ELSE ' ' END AS FIFTH_PART ,SUBSTR(EXCPT_4_RT_DSC, FIFTH_POS+1) EXCPT_5_RT_DSC ,POSITION('_' IN EXCPT_5_RT_DSC) SIXTH_POS ,CASE WHEN SIXTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_5_RT_DSC, 1, SIXTH_POS)) WHEN FIFTH_POS > 0 AND SIXTH_POS = 0 THEN EXCPT_5_RT_DSC ELSE ' ' END AS SIXTH_PART ,SUBSTR(EXCPT_5_RT_DSC, SIXTH_POS+1) EXCPT_6_RT_DSC ,POSITION('_' IN EXCPT_6_RT_DSC) SEVENTH_POS ,CASE WHEN SEVENTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_6_RT_DSC, 1, SEVENTH_POS)) WHEN SIXTH_POS > 0 AND SEVENTH_POS = 0 THEN EXCPT_6_RT_DSC ELSE ' ' END AS SEVENTH_PART ,SUBSTR(EXCPT_6_RT_DSC, SEVENTH_POS+1) EXCPT_7_RT_DSC ,POSITION('_' IN EXCPT_7_RT_DSC) EIGHTH_POS ,CASE WHEN EIGHTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_7_RT_DSC, 1, EIGHTH_POS)) WHEN SEVENTH_POS > 0 AND EIGHTH_POS = 0 THEN EXCPT_7_RT_DSC ELSE ' ' END AS EIGHTH_PART ,SUBSTR(EXCPT_7_RT_DSC, EIGHTH_POS+1) EXCPT_8_RT_DSC ,POSITION('_' IN EXCPT_8_RT_DSC) NINTH_POS ,CASE WHEN NINTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_8_RT_DSC, 1, NINTH_POS)) WHEN EIGHTH_POS > 0 AND NINTH_POS = 0 THEN EXCPT_8_RT_DSC ELSE ' ' END AS NINTH_PART ,SUBSTR(EXCPT_8_RT_DSC, NINTH_POS+1) EXCPT_9_RT_DSC ,POSITION('_' IN EXCPT_9_RT_DSC) TENTH_POS ,CASE WHEN TENTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_9_RT_DSC, 1, TENTH_POS)) WHEN NINTH_POS > 0 AND TENTH_POS = 0 THEN EXCPT_9_RT_DSC ELSE ' ' END AS TENTH_PART ,SUBSTR(EXCPT_9_RT_DSC, TENTH_POS+1) EXCPT_10_RT_DSC ,POSITION('_' IN EXCPT_10_RT_DSC) ELEVENTH_POS ,CASE WHEN ELEVENTH_POS > 0 THEN TRIM(TRAILING '_' FROM SUBSTR(EXCPT_10_RT_DSC, 1, ELEVENTH_POS)) WHEN TENTH_POS > 0 AND ELEVENTH_POS = 0 THEN EXCPT_10_RT_DSC ELSE ' ' END AS ELEVENTH_PART from cdp_sandbox_.v_dim_rt_dtl; Thanks & Regards, Vivek
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||