拆分FullName Where具有空值(db2 sql)

时间:2019-06-23 03:55:01

标签: sql database split db2

我的全名包含空白或null值,当我分解为姓氏时会导致错误。

这是错误: 错误[22011] [IBM] [DB2 / AIX64]由于标量函数的数字参数超出范围,因此未执行该语句。

这是我的原始代码:

UPPER(right(AGENT_NM, (char_length (AGENT_NM) - position( ' ', AGENT_NM))))|| ', ' || UPPER(left(AGENT_NM, position( ' ', AGENT_NM) - 1)) AS AGENT_NAME,

这是我尝试过的:

1-

CASE when REGEXP_COUNT(AGENT_NM,',')> 0 then left (AGENT_NM, position( ' ', AGENT_NM) - 1) END AS FNAME,

2-

CASE when(AGENT_NM= ' ') then Null Else left (AGENT_NM, position( '
> ', AGENT_NM) - 1) END AS FNAME,

但是它返回空白。

2 个答案:

答案 0 :(得分:1)

首先在名称末尾连接一个空格:

SELECT
  TRIM(UPPER(RIGHT(AGENT_NMs, char_length (AGENT_NMs) - position( ' ', AGENT_NMs))))|| 
    ', ' || 
    TRIM(UPPER(left(AGENT_NMs, position( ' ', AGENT_NMs) - 1))) 
  AS AGENT_NAME
FROM
  (
    SELECT 
      a.*,
      COALESCE(agent_nm, '')||' ' as agent_nms
    FROM
     yourtable a
  ) x

在这里,我们使用合并来确保名称不为null,然后在位置函数上添加一个空格作为内容

最重要的一点是您的代码经过了调整,以引用新名称agent_nms并添加了一个额外的修整命令以删除任何多余的空格。看来确实有太多括号了

答案 1 :(得分:-2)

name=str(input("your name here"))
split_name=name.split(" ")