Я использовал хранимую процедуру, чтобы проверить, существует ли имя в таблице или нет, используя следующий фрагмент кода ..
BEGIN
IF ids = 0 THEN
SELECT * FROM table_name WHERE `table_id` = alb_id AND name LIKE CONCAT('%',var_name,'%');
END IF;
END
Я получил решение, если имя не содержит никаких специальных символов или скобок, как XXXX.
Если имя содержит какие-либо квадратные скобки, значит, результат не пришел, как XX (YY) GG.
Предложи мне лучшее решение
Отредактировано:
В этом случае, если имя уже существует, я не должен вставлять его снова, для этого условия я использовал эту процедуру. Если он возвращает mysql_num_rows> 0, значит, я не буду вставлять, иначе я вставлю имя в мою таблицу ..
Мои образцы имен, ..
В списке названий «Кто-то, как вы» и «Кто-то, как вы (Live Acoustic)» есть два разных имени, я хочу определить, что имя «Кто-то, как вы (Live Acoustic)» уже существует или нет ..
Как мне это сделать?
CREATE TABLE `stack_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB CHARSET=utf8;INSERT INTO `blur_new`.`stack_test` (`id`, `text`) VALUES ('1', 'run (rabbit) run');
INSERT INTO `blur_new`.`stack_test` (`id`, `text`) VALUES ('2', 'test');
set @a = 'n (rabbit)';
select * from stack_test where text like concat('%',@a,'%');
результаты в:
1 | бег (кролик) бег
Итак, это работает.
проверить остальные условия в где пункт
проверьте, как вы передаете значение
Возможно, вам придется проверить ваши типы данных. У меня есть ощущение, что что-то не так
Других решений пока нет …