我有下面一段失败的代码。
,COALESCE(SAP.LAST_NAME, SUBSTR(PERSON_DIM.PERSON_NAME, 1,INDEX(PERSON_DIM.PERSON_NAME,',' )-1)) AS Lastname
Error: SELECT Failed: [2663] SUBSTR: string subscript out of bounds in PERSON_NAME
我调试并发现问题在于SUBSTR(PERSON_DIM.PERSON_NAME,1,INDEX(PERSON_DIM.PERSON_NAME,',')-1部分。
SEL PERSON_NAME,INDEX(PERSON_NAME,',' )-1 FROM NDW_SHARED_PII_VIEWS.PERSON_DIM WHERE PERSON_NAME NOT LIKE '%,%';--Giving us results
output:
Star Installations Inc -1
Unassigned -1
Cable Services Company Inc. -1
SEL SUBSTR(PERSON_NAME, 1,INDEX(PERSON_NAME,',' )-1) FROM NDW_SHARED_PII_VIEWS.PERSON_DIM WHERE PERSON_NAME NOT LIKE '%,%';--Failing
Above query eventually becomes like below which is causing confusion i believe.
SEL SUBSTR(PERSON_NAME, 1,-1) FROM NDW_SHARED_PII_VIEWS.PERSON_DIM WHERE PERSON_NAME NOT LIKE '%,%';
包含','的PERSON_NAME运行正常。您能指导我如何构建查询框架以避免此错误。
COALESCE(SAP.LAST_NAME,
SUBSTR(PERSON_DIM.PERSON_NAME, 1, INDEX(PERSON_DIM.PERSON_NAME || ',', ',' ) - 1
)
) AS Lastname
我已经在下面尝试过,并且效果很好。
COALESCE(SAP.LAST_NAME,
CASE WHEN PERSON_DIM.PERSON_NAME NOT LIKE '%,%'
THEN PERSON_DIM.PERSON_NAME
ELSE
SUBSTR(PERSON_DIM.PERSON_NAME,1,INDEX(PERSON_DIM.PERSON_NAME,',' )-1) END) AS LASTNAME