sql - 将约束设置为从 0 开始,然后仅从 9 开始并包含 11 位数字?
问题描述
我目前正在创建一个数据库项目,其中它只接受一个以“09”开头的有效电话号码,其余的是任何数字,尽管它应该仅限于包括 09 在内的 11 个数字。使用下面的代码,它只接受 11 个数字但即使我尝试了 63256115426 这样的数字,它仍然可以被接受。
([ContactNo]>=(0) AND [ContactNo]<=(9999999999.))
解决方案
您遇到的第一个问题是您为电话号码使用了错误的数据类型,因此您需要使用适合您情况的正确数据类型CHAR(11)/VARCHAR(11)
。
然后,您需要按如下方式创建约束:
CREATE TABLE MyTable (
ContactNo varchar(255)
CONSTRAINT CK_ContactNo2
CHECK (ContactNo LIKE '09[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
);
INSERT INTO MyTable(ContactNo) VALUES ('11111') -- Fail
INSERT INTO MyTable(ContactNo) VALUES ('09123456789')-- Succeed
如果您不重新创建表格,请不要忘记删除前一个。
推荐阅读
- reactjs - 使用反应钩子在身份验证过程中进行无休止的刷新
- python - Python - Selenium Webdriver 和 reCAPTCHA
- excel - 有没有办法关闭文件关闭后保持打开的 VBA 进程(由于 Titus 分类插件)
- .net-core - 模拟异步 dapper 调用以在设置期间立即抛出异常
- imagemagick - 如何使用 ImageMagick 在图像上绘制多个叠加矩形
- arrays - 如何在Scala中按索引从数组中删除项目?
- c++ - pthread_join 和 pthread 奇怪的行为
- python - Python Google Drive API,上传内存中的数据而不是磁盘上的文件?
- javascript - JQUERY未捕获错误:语法错误,无法识别的表达式:#在javascript上:void(0)
- ruby-on-rails - Rails 6 在没有生产信息的情况下返回 500 错误