作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张 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');
如果值违反格式,我希望查询失败并打印错误消息。例如,如果“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/
我是一名优秀的程序员,十分优秀!