我正在创建一个数据库,我想限制其中一个表的字段包含不超过50个单词,但我不确定创建此约束的方法是什么....?
答案 0 :(得分:4)
您可以在列中添加CHECK
约束。问题是,你如何定义一个单词'?
以一种相当简单的方式,我们可以假设单词是“分裂”的。按空格。在MSSQL中,您必须添加如下支票:
ALTER TABLE [myTable] ADD CONSTRAINT [chk_max_words] CHECK (Len(Replace([myField], N' ', N'')) > (Len([myField]) - 3))
当您尝试插入或更新记录并将[myField]置于' test'它会通过,但如果你把它设置为测试测试测试'它会失败,因为空格的数量是3,我们的检查不会让它通过。
当然,这种方法远非完美。它不考虑双空格,尾随空格等... 从实际的角度来看,您可能希望编写一个函数,根据您(精心设计的)规则计算单词数,然后在检查中使用它。
ALTER TABLE [myTable] ADD CONSTRAINT [chk_max_words] CHECK (dbo.fn_number_of_words([myField] <= 3)