Разделить полное имя, где есть нулевые значения (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,

Однако он возвращает пустой.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

name=str(input("your name here"))
split_name=name.split(" ")
Ответ принят как подходящий

Сначала соедините пробел в конце вашего имени:

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

Здесь мы используем объединение, чтобы гарантировать, что имя не является нулевым, а затем мы добавляем пробел как что-то, чтобы функция положения могла найти

Верхний бит — это просто ваш код, измененный для ссылки на новое имя agent_nms и добавления дополнительной команды обрезки для удаления любых посторонних пробелов. Кстати, похоже, что в нем было слишком много скобок.

Другие вопросы по теме