MySQL Query с использованием substr () и instr () завершается ошибкой, если игла не найдена в стоге сена

0

Мне нужно создать столбец псевдо-ключа в таблице MySQL, который определяется как первая часть поля point_title (вплоть до пробела, если таковая имеется), объединенного с идентификатором записи.

Пример данных:

id      point_title       pseudo_key
_____________________________________
123     Scott R.          scott123
124     John R.           john124
125     Stacey J.         stacey125
126     Ted               ted126

Чтобы сделать это, я создаю триггерную программу, которая автоматически заполнит это поле после обновления/вставки:

    DROP TRIGGER IF EXISTS `point_name_update`//
    CREATE TRIGGER `point_name_update` 

    BEFORE UPDATE ON `map-points`
     FOR EACH ROW BEGIN
        SET NEW.point_name = concat(trim(lower(SUBSTRING(NEW.point_title,1,INSTR(NEW.point_title, ' ')))),NEW.id);
      END
    //

Однако я не могу понять, как обрабатывать случай, когда у Теда нет места в поле point_title. Значение pseudo_key для этой записи равно "126".

У кого-нибудь есть идея для этого?

Спасибо, Скотт

Теги:

1 ответ

0
Лучший ответ

Существует несколько способов скинуть этот кот, и я обнаружил, что вместо него можно использовать SUBSTRING_INDEX():

ДРОПА ТРИГГЕР, ЕСЛИ СУЩЕСТВУЕТ point_name_update//  CREATE TRIGGER point_name_update

ПЕРЕД ОБНОВЛЕНИЕМ map-pointsДЛЯ КАЖДОЙ РОБОЙ SET NEW.point_name = concat (SUBSTRING_INDEX (LOWER (TRIM (NEW.point_title)), '', 1), NEW.id);  END

Ещё вопросы

Сообщество Overcoder
Наверх
Меню