SQL Server 2012 LIKE表达式模式

时间:2014-04-23 22:03:33

标签: sql sql-server

我正在进行一项赋值,要求我添加一个约束,以确保列中的所有值都是纯数字。我从

开始
ALTER TABLE table_name
ADD CONSTRAINT ck_name CHECK (col_name LIKE 'pattern');

问题在于值的长度可能不同。我一直在做大量的阅读,但我无法找出一种模式,将其限制为数字,但仍然让它的长度不同。我知道在MySQL中你可以做[0-9] *',但这并不适用于SQL Server。任何人都可以指向一个等价的方向或确认它不能发生/我接近错了吗?

编辑:我必须根据作业要求使用约束。

2 个答案:

答案 0 :(得分:0)

   ADD CONSTRAINT ck_name CHECK (TRY_PARSE(col_name AS int) IS NOT NULL);

Haven没有试过这个但可能有效吗?

答案 1 :(得分:0)

你可以做这样的事情

ALTER TABLE table_name
ADD CONSTRAINT ck_name CHECK (ISNUMERIC(col_name)<>0);

(或)类似这样的事情

ALTER TABLE table_name
ADD CONSTRAINT ck_name 
CHECK (not col_name like '%[^0-9]%');