我的全名包含空白或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,
但是它返回空白。
答案 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(" ")