Я использую MySQL 5.7. В основном я работаю в Workbench, чтобы попытаться определить правильный синтаксис для скрипта, который будет запускаться приложением. Логика, которую я хотел бы реализовать, не может быть реализована непосредственно в приложении.
Мне нужно проверить текстовое поле на наличие дубликатов. Гарантируется, что в настоящее время нет дубликатов. Я не привык писать какую-либо значимую логику (кроме запросов SELECT / UPDATE) в SQL, поэтому я изо всех сил. Я очень неопытен с синтаксисом. Что я хотел бы сделать, это
Принять строку ввода
Если эта входная строка найдена в aField
внутри одной из строк в aTable
2.1: Рекурс с начальным вводом, соединенным с каким-либо символом
Результат будет вставлен (вместе с некоторыми другими данными) в aTable
.
Этот код показывает, что я хотел бы сделать, но, очевидно, синтаксически некорректен.
DELIMITER ;;
DROP PROCEDURE IF EXISTS getNoDupe;;
CREATE PROCEDURE getNoDupe(IN potentialDupe VARCHAR(50))
BEGIN
SELECT IF( (SELECT aField FROM aTable WHERE aField = potentialDupe IS NULL), potentialDupe, NULL) INTO result;
SELECT IFNULL(result, CALL getNoDupe(CONCAT(potentialDupe, "Garb"))
END;;
DELIMITER ;
CALL getNoDupe('adupe');
Ожидается, если в aTable
нет записей с aField
из 'adupe'
getNoDupe('adupe') => 'adupe'
Ожидается, если существует в aTable
записях с aField
из 'adupe'
getNoDupe('adupe') => 'adupey'
Ожидается, если есть в aTable
записях с aField
из 'adupe' И 'adupey'
getNoDupe('adupe') => 'adupeyy'