1)“teacher”结构如下:
字段名称 数据类型 约束控制 说明
teacher_no char(4) 主键 教工号
teacher_name varchar(10) 非空 教师姓名
teacher_contact char(11) 非空,11为数字,第1位是1 联系电话
想问问如何使得 teacher_contact char(11) 十一位都为数字且第一位是1
谢谢
这种限制一般不正在数据库里做处理,在程序中校验处理了,再入库的
保存的时候做校验就行,可以在前端用正则表达式判断输入是否符合,也可以传到后端做判断,最终,符合之后存入数据库就行啦。
这很明显就是保存手机号码,你可以搜一下正则表达式匹配手机号码,有官方写好的。
有帮助的话采纳一下哦!
这个无法再创建表的时候限制吧,只有在数据写入表之前正则判断
这个限制你不会放在程序里面吗?还是你就是想依靠mysql来限制?
这个一般建议在前端或者后端校验,数据库不对这个进行校验,如果非要在数据库校验的话,那就在插入的时候使用触发器或者在插入之前用正则表达式校验数据是否为符合格式的手机号
程序中限制,正确的格式再写入数据库
BIGINT 可以控制teacher_contact 都入整型 那个如果char(11)十一位都为数字且第一位是1 只能是入库的时候进行判断全是数字的字符串且第一位是1
您好,题主。一般可以有以下的做法:
1、您的数据库限制只在mysql中吧,据我所知,mysql 8.0.16以前是不能使用check约束的,不像pg,oracle等数据库,在8.0.16(含)以后是可以增加check约束的,使用语法为:[CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED] 说明如下图:
1.mysql 8.0以后可以做check限制,但没有必要
2.你应该在应用层做限制,因为应用层是与用户交互的,数据库在后台,报错了用户又看不见,最终还是要把错误报到应用层去,那为什么不一开始就在应用层做呢
1.建表teacher_contact char(11) 这样建是没问题的
2.如果想要达到 十一位都为数字且第一位是1的目的可以在数据进入数据库前处理。
一般这种事情我们可以建一个临时表先把数据接收进来不要限制电话这个字段的位数和格式,然后再建一张表,把这个字段进行清洗(限制位数,以什么开头,可以使用正则表达式来判断,同时要考虑如果不满足正则的这些数据怎么处理),这样就得到最终的你想要的结果了。