1

テーブルの列で、数字で始まり、「$」を含まない文字列のみを許可したいとします。このテーブルのチェック制約はどのようになりますか?

4

4 に答える 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 に答える