MySQL列上的大写约束

时间:2015-07-24 11:31:28

标签: mysql

我有一个名为" UserID"使用" varchar(10)"的类型。有没有办法将该列限制为仅接受大写字符?

4 个答案:

答案 0 :(得分:2)

你问了

  

有没有办法强制[MySQL]列只接受大写字符?

没有约束设置可以这样做。

@vatev提出了一对触发器来改变数据以使其成为大写。那可能有用。但它会有性能成本。

如果您使用不区分大小写的排序规则,MySQL会将您的列视为单个案例。大多数在数​​据中需要此类限制的开发人员使用其UPDATE和INSERT语句来强制执行这些限制。

INSERT INTO tab (col) VALUES (UPPER('data-item')) 

会做到这一点。

答案 1 :(得分:0)

在创建表时,设置约束如下:

Text="{Binding text, UpdateSourceTrigger=PropertyChanged}"

这将设置一个仅接受大写数据的约束。

答案 2 :(得分:0)

安基·萨哈(Ankit Saha)的上述答案不太正确。这将设置一个CONSTRAINT,强制将字段全部大写:

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上使用。

答案 3 :(得分:-1)

尝试使用下面提到的查询: -

更新my_table SET my_column = UPPER(my_column)

一切顺利。