You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB 10.4中为整数列指定取值范围?

解决MariaDB添加带范围约束列的语法问题

你的SQL语句语法错误,因为不能在定义数据类型时直接用BETWEEN指定取值范围,需要通过CHECK约束实现整数范围限制。另外注意:以0开头的数字(比如01067)会被MariaDB解析为八进制数,八进制01067等于十进制567,如果需求是限制十进制范围1067-99998,要去掉前导零。

正确的SQL写法

方式一:添加列时直接绑定CHECK约束

ALTER TABLE p_infos 
ADD plz INT CHECK (plz BETWEEN 1067 AND 99998);

(注:SMALLINT的最大值是32767,99998超过了这个范围,所以要改用INT类型,否则插入99998会报错)

方式二:先添加列,再单独添加CHECK约束

-- 先添加列
ALTER TABLE p_infos ADD plz INT;
-- 添加范围约束
ALTER TABLE p_infos 
ADD CONSTRAINT chk_plz_range CHECK (plz BETWEEN 1067 AND 99998);

额外说明

如果PLZ是需要保留前导零的邮编(比如德国5位邮编),不应该用整数类型,而是用VARCHAR(5)并约束格式:

ALTER TABLE p_infos 
ADD plz VARCHAR(5) CHECK (plz REGEXP '^[0-9]{5}$' AND plz BETWEEN '01067' AND '99998');

内容的提问来源于stack exchange,提问作者Fruit_alpha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:29:58