Sql 不区分大小写的检查约束
创建了下表:Sql 不区分大小写的检查约束,sql,oracle,novaclient,Sql,Oracle,Novaclient,创建了下表: CREATE TABLE VEHICLES (vehicleVIN VARCHAR(30) PRIMARY KEY, vehicleType VARCHAR(30) NOT NULL CHECK (vehicleType IN ('compact', 'midsize', 'fullsize', 'suv', 'truck')), vehicleWhereFrom VARCHAR(30) NOT NULL CHECK (vehicleWhereFrom IN ('maryla
CREATE TABLE VEHICLES
(vehicleVIN VARCHAR(30) PRIMARY KEY,
vehicleType VARCHAR(30) NOT NULL CHECK (vehicleType IN ('compact', 'midsize', 'fullsize', 'suv', 'truck')),
vehicleWhereFrom VARCHAR(30) NOT NULL CHECK (vehicleWhereFrom IN ('maryland','virginia','washington, d.c.'));
运行insert命令时,具有大写字母的条目(例如:Compact、Compact、马里兰、弗吉尼亚等)违反检查约束(错误ORA-02290)。如何使检查约束不区分大小写?所期望的结果是,只要单词拼写正确,插入的数据就可以被接受,无论大小写如何。通过NOVA使用Oracle数据库。谢谢 使用
lower
检查列的小写版本
CHECK vehicleType VARCHAR(30) NOT NULL CHECK (lower(vehicleType) IN ('compact', 'midsize', 'fullsize', 'suv', 'truck')),
CHECK vehicleWhereFrom VARCHAR(30) NOT NULL CHECK (lower(vehicleWhereFrom) IN ('maryland','virginia','washington, d.c.'));
使用
lower
检查列的小写版本
CHECK vehicleType VARCHAR(30) NOT NULL CHECK (lower(vehicleType) IN ('compact', 'midsize', 'fullsize', 'suv', 'truck')),
CHECK vehicleWhereFrom VARCHAR(30) NOT NULL CHECK (lower(vehicleWhereFrom) IN ('maryland','virginia','washington, d.c.'));
你可以用
CHECK (REGEXP_LIKE(vehicleType,'compact|midsize|fullsize|suv|truck','i'))
你可以用
CHECK (REGEXP_LIKE(vehicleType,'compact|midsize|fullsize|suv|truck','i'))
将这些列定义为具有不区分大小写的排序规则。因此,类似于:vehicleType VARCHAR(30)NOT NULL COLLATE BINARY_CI CHECK(vehicleType IN('compact'、'middize'、'fullsize'、'suv'、'truck')??是,或其他不区分大小写的排序规则!(或其他不区分大小写的排序规则,具体取决于您的需要。)定义这些列以具有不区分大小写的排序规则。例如:vehicleType VARCHAR(30)NOT NULL COLLATE BINARY_CI CHECK(vehicleType IN('compact'、'midsize'、'fullsize'、'suv'、'truck')??是,或其他不区分大小写的排序规则!(或其他不区分大小写的排序规则,取决于您的需要。)谢谢。我将在今晚访问服务器后重试。出于某种原因,我认为这只会检查所有小写的内容,但现在似乎有意义了。我已经有几年没有使用SQL了。谢谢你的复习!这果然奏效了。再次感谢你帮我回忆起我的记忆!祝你过得愉快!谢谢我将在今晚访问服务器后重试。出于某种原因,我认为这只会检查所有小写的内容,但现在似乎有意义了。我已经有几年没有使用SQL了。谢谢你的复习!这果然奏效了。再次感谢你帮我回忆起我的记忆!祝你过得愉快!