sql - 拆分 FullName 哪里有空值(db2 sql)
问题描述
我的全名包含空白或空值,当我拆分为名字、姓氏时会导致错误。
这是错误: 错误 [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,
但是它返回空白。
解决方案
首先在您的姓名末尾连接一个空格:
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
这里我们使用coalesce来保证name不为null,然后我们在上面添加一个空格作为position函数查找的东西
最重要的是您的代码被调整为引用新名称 agent_nms 并添加了一个额外的修剪命令以删除任何无关的空格。顺便说一句,它看起来确实有太多的括号
推荐阅读
- java - SQL / Hibernate 仅在 url 不存在时插入
- geometry - 如果给定交集没有返回记录,是否可以防止 ogr2ogr 生成 shapefile?
- python - 解决在新文本电影中创建列表的问题,比较 Python 中其他文本文件中的其他两个列表
- python - 是否可以防止从冻结的 python 数据类中读取?
- angular - Angular 的“产品”构建工件中的打字稿文件
- postgresql - 由于与 ubuntu 上的 postgresql 中的恢复冲突,pg_dump 在备用服务器取消语句上失败
- javascript - index++时添加延迟(增加)
- c# - 使用 C# 将 Oracle Blob 插入转换为 SQL varbinary
- javascript - 检查日期是否与今天的开始日期在数组中连续
- java - 为什么这种显式广播不起作用?