我如何添加一个只允许 A-Z 作为最后一个字符的检查约束
How to i add a check constraint that only allows A-Z for the last character
您好,我有一个 varchar 列,我只想在最后一个字符上允许来自 A-Z 的字符。我尝试了多种解决方案,但没有奏效。我试过的最后一个是
ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (roomNo NOT LIKE '%[^A-Z]');
但我仍然可以向其中添加像 asdd1 这样的值。有没有解决的办法?提前谢谢你
您可以将 ASCII()
函数与 SUBSTR()
一起使用:
ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (ASCII(SUBSTR(roomNo,-1)) BETWEEN 65 AND 90);
其中 A 的 ASCII 值为 65,Z 的 ASCII 值为 90,所有其他大写字母都在此范围内。
regexp_like()
是一个简单的解决方案:
ALTER TABLE timetableslot ADD CONSTRAINT
CHK_RoomNo CHECK (REGEXP_LIKE(roomNo, '[A-Z]$') );
您好,我有一个 varchar 列,我只想在最后一个字符上允许来自 A-Z 的字符。我尝试了多种解决方案,但没有奏效。我试过的最后一个是
ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (roomNo NOT LIKE '%[^A-Z]');
但我仍然可以向其中添加像 asdd1 这样的值。有没有解决的办法?提前谢谢你
您可以将 ASCII()
函数与 SUBSTR()
一起使用:
ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (ASCII(SUBSTR(roomNo,-1)) BETWEEN 65 AND 90);
其中 A 的 ASCII 值为 65,Z 的 ASCII 值为 90,所有其他大写字母都在此范围内。
regexp_like()
是一个简单的解决方案:
ALTER TABLE timetableslot ADD CONSTRAINT
CHK_RoomNo CHECK (REGEXP_LIKE(roomNo, '[A-Z]$') );