gpt4 book ai didi

mysql - 如何在 mysql 中只允许字母数字值

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

我有一张 table

CREATE TABLE table_name
(
EmpId VARCHAR(50),
Name VARCHAR(100)
)

如何将 EmpId 列限制为由两个字母后跟 3-5 位数字组成?以下是有效值的所有示例:

ac236, ak2356, av23695, ak365

我尝试使用以下检查约束:

ALTER TABLE table_name
ADD CONSTRAINT ck_table_name CHECK (EmpId NOT LIKE'%[^a-zA-Z0-9 ]%')

但是,它允许所有字母和数字的组合,例如“23”和“fads”:

INSERT INTO table_name
VALUES
('23', 'Test 2'),
('fabs', 'Test 2');

inserted rows with invalid EmpIDs

如果值违反格式,我希望查询失败并打印错误消息。例如,如果“na23”作为 EmpID 插入,MySQL 可能会说:

Empid should be ab123/ab1234/a12345 format

最初,我使用的是 MySQL 5.7.11-0ubuntu6-log(结果是 doesn't support CHECK constraints ),但已升级到 MySQL 8.0.17。

最佳答案

假设是 MySQL >=8.0.16

check(EmpId regexp '^[a-z]{2}[0-9]{3,5}$')

关于mysql - 如何在 mysql 中只允许字母数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57196488/

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