手机号不合法mysql

在MySQL中,存储手机号的列通常使用VARCHAR类型。但是,如果我们想要确保只存储正确的手机号,不合法的手机号应该被拒绝。

手机号不合法mysql

有可能的不合法手机号类型有:

• 长度不为11
• 包含除数字以外的字符
• 不是以1开头
• 不是中国大陆的手机号(比如香港、澳门、台湾等)

可以使用以下策略来确保我们只存储合法的手机号:

• 使用正则表达式匹配手机号格式。例如:^(1([38]\d|4[57]|5[012356789]|7[0135678]|9[89]))\d{8}$
• 在MySQL中使用触发器,触发器可以在插入或更新数据之前检查手机号是否合法,并拒绝插入或更新操作。
•例本。
(创建存储过程)
(CREATE PROCEDURE `check_phone_number` (IN `number` VARCHAR(20), OUT `is_valid` BOOLEAN)
BEGIN
SET `is_valid` = FALSE;
IF CHAR_LENGTH(`number`) = 11 AND `number` REGEXP '^(1([38]\d|4[57]|5[012356789]|7[0135678]|9[89]))\d{8}$' THEN
SET `is_valid` = TRUE;
END IF;
END)
(创建触发器)
CREATE TRIGGER `phone_number_before_insert_trigger` BEFORE INSERT ON `my_table` FOR EACH ROW
BEGIN
DECLARE is_valid BOOLEAN DEFAULT FALSE;
CALL `check_phone_number`(NEW.`phone_number`, is_valid);
IF NOT is_valid THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid phone number';
END IF;
END

使用上述方法可以确保MySQL中只存储合法的手机号。