在mysql命令提示符下,我运行:
SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like '%Nadiya%')
返回
EXISTS (SELECT 1 FROM test1 WHERE name1 like '%Nadiya%')
1
但是以下程序不会作为Exists打印。我需要进入IF声明。 请让我知道IF内部可能会有什么变化。
DELIMITER //
CREATE PROCEDURE verifyAndUpdate30(in searchName varchar(12), in searchId bigint, inout result int)
BEGIN
IF ( SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like '%searchName%') ) THEN
SELECT 'EXISTS';
UPDATE TEST SET testFlag=1 WHERE id=searchId;
SET result=1;
ELSE
SELECT 'DOES NOT EXISTS';
END IF;
SELECT result;
END
//
DELIMITER ;
致电程序:
SET @increment = 0;
call verifyAndUpdate30('Nadiya', 5532, @increment);
答案 0 :(得分:2)
您需要使用LIKE
:
CONCAT('%', searchName, '%')
字符串
,,,
IF ( SELECT EXISTS (
SELECT 1
FROM test1
WHERE name1 like CONCAT('%', searchName, '%') -- Build %searchName% from parts
) ) THEN
,,,
答案 1 :(得分:1)
由于searchName
可以作为硬编码字符串,因此请以这种方式替换您的查询:
CONCAT('%', searchName, '%')
DELIMITER //
CREATE PROCEDURE verifyAndUpdate30(in searchName varchar(12), in searchId bigint, inout result int)
BEGIN
IF ( SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like CONCAT('%', searchName, '%')) ) THEN
SELECT 'EXISTS';
UPDATE TEST SET testFlag=1 WHERE id=searchId;
SET result=1;
ELSE
SELECT 'DOES NOT EXISTS';
END IF;
SELECT result;
END
//
DELIMITER ;
在MySQL中查看有关CONCAT
的更多信息。