SQL案例声明的帮助,以从可能具有逗号的列中选择



我正在尝试将列添加到一个视图中,其中我使用以下代码仅从格式化'lastname,firstName'的字段中摘取姓氏:

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(',', A.PREVIOUS_NAMES)-1)), '') 
AS "PREVIOUS_NAME",  

但是,当该字段中有一个逗号时,从以下问题引用的情况下,当不存在逗号时的视图错误。
sqlcode = -138在大计数表上标记,而不是小db2

我试图提出一个案例声明来容纳这一点,以选择逗号何时出现,但我一直没有成功,我正在寻求经验丰富的人的帮助或建议。

RTRIM(
   CASE WHEN LOCATE(",", A.PREVIOUS_NAMES) = 0 
   THEN A.PREVIOUS_NAMES 
   ELSE SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(",", A.PREVIOUS_NAMES)-1) 
   END) AS "PREVIOUS_NAME"

它不是很复杂,它给了我SQLCode-206说:"在上下文中无效"。

感谢您提供的任何帮助!

我没有在DB2中完成此操作,但是围绕此的常见方法是添加逗号:

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES, 1, LOCATE(',', A.PREVIOUS_NAMES || ',') - 1)), '') 
AS "PREVIOUS_NAME",  

最新更新