gpt4 book ai didi

mysql - 使用正则表达式触发验证不适用于换行符

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

我正在尝试使用 mysql 触发器验证插入。 col1 中的插入内容应该只是数字。一开始就不能将 col1 定义为整数。但是,如果末尾有换行符,则验证失败。

这是表格

CREATE TABLE testTable(col1 varchar(20), col2 int);

这里是触发器验证器

DELIMITER $$
CREATE TRIGGER check_numeric BEFORE INSERT ON testTable
FOR EACH ROW
BEGIN
IF (NEW.col1 REGEXP '^[0-9]+$') = 0 THEN
SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT='non-numerical';
END IF;
END $$

如果我尝试在末尾插入一个包含换行符的字符串,这会通过验证,尽管我认为它不应该因为换行符不是数字。

INSERT INTO testTable values('323423\n', 12);

有人知道我在这里遗漏了什么吗?

最佳答案

另一种选择是搜索不是数字的任何内容,如果任何字符不是 数字,这将返回 1:REGEXP '[^[:digit:]]'

所以 IF 子句是

IF (NEW.col1 REGEXP '[^[:digit:]]') = 1 THEN ...

当然你可以写[^0-9]而不是[:digit:]如果你不想使用字符类

关于mysql - 使用正则表达式触发验证不适用于换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54379629/

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