我已经在网上搜索过,但只发现了如何将列更新为小写。有没有一种方法可以在列中放置约束,使其仅接受小写字母,并在尝试以大写字母插入内容时出现错误。

下表如下:

create table Student
(
  ID int,
  Name varchar(50),
  Email varchar(50)
);

最佳答案

您可以将check约束与binary_checksum函数一起使用:

alter table student add check (binary_checksum(email) = binary_checksum(lower(email)));

您还可以在check中使用多个条件,因此尽管处理需求会增加,但您还可以检查电子邮件地址是否包含@字符,依此类推。
check (binary_checksum(email) = binary_checksum(lower(email)) and charindex('@', email) > 0);

最好在插入客户端应用程序的客户端应用程序中检查输入,或者使用触发器或存储过程来处理插入并将数据强制为小写。

引用SQL Server manual:

关于sql - 将小写约束添加到sql中的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32095506/

10-15 18:22