テーブルの列で、数字で始まり、「$」を含まない文字列のみを許可したいとします。このテーブルのチェック制約はどのようになりますか?
4 に答える
4
Oracle 10g+ を想定すると、CHECK 制約で Oracle の正規表現機能を使用できます。
ALTER TABLE YOUR_TABLE
ADD CONSTRAINT col_regx CHECK REGEXP_LIKE(column_name,'^[[:digit:]]{1}[^$]*$'));
参考文献:
于 2011-04-03T06:01:18.923 に答える
1
Oracle の正規表現を使用する必要があるようです。対応する IF 制約の構文要件に関する便利なリンクを以下に示します。
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm
于 2011-04-03T05:56:30.523 に答える
0
私は次のようなことをします
ALTER TABLE YOUR_TABLE ADD CONSTRAINT col_regx CHECK(substr(column_name、1,1)between '0' and '9' and column_name not like'%$%')
(テストされていませんが、おそらく正規表現よりも高速です)
于 2011-04-04T19:15:53.903 に答える
0
正規表現は次のようになります^\d[^$]*$
私は Oracle を知らないので、これが実際に役に立たない場合はご容赦ください。
于 2011-04-03T05:54:06.623 に答える