0
create table table1
(
  column1 varchar2(8)
  check constraint column1_ch check ........
);

最初の 4 文字が特定のアルファベットのセットであり、最後の 4 文字が数字であることをデータで確認するにはどうすればよいですか? および値の範囲。

たとえば、データは ABCD2121、ABCD1111 です。

範囲 - ABCD0001 ~ ABCD9999

したがって、数字が変化している間は「ABCD」が固定されます。

「[]」を使用して数値を定義することについてオンラインで見つけましたが、それを制約に統合することはできません。

ありがとう

4

3 に答える 3

1

最も簡単な方法は、正規表現を使用してこれを行うことです。

alter table table1
  add constraint chck_code check (regexp_like(column1, '(ABCD)[0-9]{4}') );
于 2012-11-05T15:43:05.053 に答える
0

プレフィックスの固定セットがある場合は、regexp_like を使用してプレフィックス リストを列挙します。

alter table test_1 
add constraint chk_col1 check(regexp_like(column1, '(ABCD|EFGH)[0-9]{4}'));

これにより、ABCD と EFGH をプレフィックスとして使用でき、その後に 4 桁の数字が続きます。

于 2012-11-05T15:42:44.547 に答える
0

チェック条件は次のようになります。

(column1 LIKE 'ABCD[0-9][0-9][0-9][1-9]')

編集: アルファ文字のセット プレフィックスと範囲を使用するように変更されました。

これを説明する Microsoft SQL Server を使用したソリューションを次に示します。

DECLARE @MyTable TABLE
(column1 varchar(8) check (column1 LIKE 'ABCD[0-9][0-9][0-9][1-9]'))

INSERT INTO @MyTable (column1)
       SELECT 'ABCD0000'
 UNION SELECT 'ABCD2121'
 UNION SELECT 'ABCD1111';

SELECT *
  FROM @MyTable;

INSERT INTO @MyTable (column1)
SELECT 'ABCD000A'; --<== Fails!

INSERT INTO @MyTable (column1)
SELECT 'ABCD221'; --<== Fails!
于 2012-11-05T15:40:58.687 に答える