【发布时间】:2015-11-10 20:00:29
【问题描述】:
我在 Oracle DB 中有几个表,它们将包含包含常用数据的列,可以是字符串、数字、时间/日期等。这里唯一的限制是,每当插入新数据时,如果出现以下情况,它应该会抛出错误它不是 ASCII。
Oracle 中是否有这样的属性/属性可以保证我只处理 ASCII?
【问题讨论】:
-
我正准备回答:“使用 US7ASCII 字符集创建数据库”但显然该字符集在 11G 中不再可用
我在 Oracle DB 中有几个表,它们将包含包含常用数据的列,可以是字符串、数字、时间/日期等。这里唯一的限制是,每当插入新数据时,如果出现以下情况,它应该会抛出错误它不是 ASCII。
Oracle 中是否有这样的属性/属性可以保证我只处理 ASCII?
【问题讨论】:
您可以为此创建一个检查约束:
alter table foo
add constraint check_ascii
check (asciistr(the_column) = the_column);
asciistr() 将“转义”所有非 ASCII 字符。因此,如果该函数的结果与输入不同,则它包含非 ascii 字符。
【讨论】: