我有一个名为UserID
的列,类型为varchar(10)
。是否有一种方法可以限制该列仅接受大写字符?
我有一个名为UserID
的列,类型为varchar(10)
。是否有一种方法可以限制该列仅接受大写字符?
CREATE TABLE my_table (
uc_field VARCHAR(30),
CONSTRAINT force_upper_case CHECK(BINARY uc_field = UPPER(uc_field))
);
如果你想强制小写,只需将 UPPER()
更改为 LOWER()
在 mariadb 10.2 上进行了测试,但应该适用于支持 CHECK()
约束的任何版本的 mysql/mariadb。
您问道:
有没有一种方法可以强制 [MySQL] 列仅接受大写字符?
没有约束设置可以实现这一点。
@vatev建议使用一对触发器来更改数据以使其大写。这可能有效,但会带来性能成本。
如果使用不区分大小写的排序规则,MySQL将把您的列视为单个大小写。大多数需要这种限制的开发人员使用UPDATE和INSERT语句来强制执行这些限制。
INSERT INTO tab (col) VALUES (UPPER('data-item'))
创建表时,请设置以下约束条件:
create table table_name(column_name check(column_name=upper(column_name)));
这将设置一个约束条件,只接受大写数据。
尝试使用以下查询:
UPDATE my_table SET my_column = UPPER(my_column)
祝一切顺利。