gpt4 book ai didi

mysql - 当使用存储过程更新/修改给定表时,如何检测是否在正常输入字符的位置插入数字?

转载 作者:行者123 更新时间:2023-11-29 11:16:39 25 4
gpt4 key购买 nike

我想在存储过程中创建一个错误处理程序,它会告诉我 IN 参数(“STATE”和“ZIP”)是否分别具有数字和字符条目。

(注意:如果您明白我要寻求帮助的内容,请跳过两段。)

我创建了一个数据库(temp),并在该数据库中创建了一个表 temp1。然后我创建了一个存储过程来填充该表,这个存储过程,proc_handler,其 IN 参数对应于表 temp1 中的列。它有一个名为 out_status 的 OUT 参数,该参数与错误处理程序相关。

我有一个重复主键的错误处理程序。例如,在我的代码底部,如果 MySQL 给出以下响应,CALL proc_handler(...) 将在 OUT 参数中存储“重复条目”;(错误代码:1062。键“PRIMARY”的重复条目“xxx xxxxx” ');否则“确定”。这很好用。

现在设置错误处理程序似乎很简单(对于某些错误代码),但是如果我尝试在 STATE 列中输入“1CA”,我如何检测到存在数字条目并在 OUT 中发出警告范围。或者类似地,如果对于 ZIP 条目输入“95ABC”,我想发出警告,说明字符已插入到 ZIP 列中。

作为编程新手,我遇到了一个建议,提到使用正则表达式和 IF THEN 语句来执行此操作,这是正确的建议吗?是否可以在存储过程中发出命令来测试 IN_parameter 是否包含意外的数字或字符输入?

USE temp;
DROP TABLE temp1;

CREATE TABLE `temp1`(
`idAddress` INT(11) NOT NULL,
`Street1` VARCHAR(45) NULL,
`City` VARCHAR(45) NULL,
`STATE` VARCHAR(45) NULL,
`ZIP` VARCHAR(5) NULL,
`Country` VARCHAR(45) NULL,
PRIMARY KEY(`idAddress`));


# Stored Procedure to populate temp1, the table created above:

DELIMITER $$

DROP PROCEDURE IF EXISTS proc_handler$$

CREATE PROCEDURE proc_handler
(IN idAddress_in INT(11) ,
IN Street1_in VARCHAR(45) ,
IN City_in VARCHAR(45),
IN State_in VARCHAR(45),
IN ZIP_in VARCHAR(5),
IN Country_in VARCHAR(45),
OUT out_status VARCHAR(30))

MODIFIES SQL DATA
BEGIN
DECLARE CONTINUE HANDLER FOR 1062
SET out_status='Duplicate Entry';

SET out_status='OK';

INSERT INTO temp1
(idAddress, Street1, City, STATE, ZIP, Country)
VALUES
(idAddress_in, Street1_in, City_in, State_in, ZIP_in, Country_in);
END;
$$

DELIMITER ;

#### Test for error handler ###

CALL proc_handler(111, '5806 Ridgemore CT','Orangevale','CA','95675','USA',@status);
SELECT @status;

最佳答案

尝试使用这个:数字:

set @sam ="4 sample";
select @sam REGEXP ('[0-9]');

如果有数值则返回1,否则返回0;

字母表:

select @sam REGEXP ('[A-Za-z]');

希望有帮助。

关于mysql - 当使用存储过程更新/修改给定表时,如何检测是否在正常输入字符的位置插入数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com