
Oracle9i にて制約をつける際の質問です。
以下のようなテーブル構造の場合に、
NAME列にCASEで分岐してBETWEENでCHECK制約をつけようとしていますが、
エラーとなってしまいます。(ORA-00920: 関係演算子が無効です。)
テーブル名:TEST2
ID NUMBER
GEND NCHAR(1)
NAME NVARCHAR2(100)
制約:
ALTER TABLE TEST2 ADD CONSTRAINT NAME_CHK CHECK (
NAME CASE
WHEN GEND = '1' THEN BETWEEN 'a' AND 'z'
WHEN GEND = '2' THEN BETWEEN 'A' AND 'Z'
ELSE BETWEEN '1' AND '9'
END
)
CASEで上記のような制約をつけることは可能でしょうか?
No.1ベストアンサー
- 回答日時:
>CASEで上記のような制約をつけることは可能でしょうか?
その壊れた構文のCASE式では、エラーになって当たり前かと。
正しい構文であれば、CASEを使ったチェックも可能かと思いますよ。
たとえば、
CHECK (
CASE
WHEN (GEND = '1') AND (NAME BETWEEN 'a' AND 'z') then 1
WHEN (GEND = '2') AND (NAME BETWEEN 'A' AND 'Z') then 1
WHEN (NAME BETWEEN '1' AND '9') then 1
ELSE 0
END = 1
)
綺麗な式ではないけど、構文的&論理的には正しい式なので、通ると思いますよ。
なるほど、このような書き方ができるんですね。
THEN の値と、ENDの後の値を比較するという発想がなかったです。
ありがとうございました。勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 英語 The study participants were patients with partiall 0 2023/01/21 14:35
- 英語 英文についての質問です。 [Actually the time difference between 1 2022/04/26 18:38
- 英語 インタビューの英語 2 2022/06/07 14:22
- 英語 英文についての質問です。 Consider the relationship between tec 1 2022/10/19 23:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle[10g]のSQL文について。(...
-
現在、VBAにてUNICODEのCSVを出...
-
CREATE TABLEのUSING INDEXに...
-
複数テーブルにある個別フィー...
-
複数のテーブル結合
-
VBA初心者
-
重複データをなくす
-
SELECT INTOで一度に複数の変数...
-
リストボックスとDataGridコン...
-
SQLの結合
-
Accessの構成をコピーしたい
-
エクセルと同じファイル名でc...
-
MySQL 5.1.22
-
SQLの記述方法
-
MySQLでのWhere句
-
コマンドからDB名に"-"を使う...
-
Excel VBAのユーザーフォームで...
-
オシロスコープYOKOGAWA DL708...
-
SQLでTableが作れないlol
-
五十音順
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
truncate tableを使って複数の...
-
オラクルのUPDATEで複数テーブル
-
エラーを起こす方法
-
テーブル定義書(Oracle) 【IX】...
-
CASEでBETWEEN制約
-
既にテーブルが存在する場合の...
-
データ削除とSQL*Loaderでのイ...
-
任意のテーブルをdrop tableしたい
-
貸家のデータベース
-
AccessからOracle DB(View)を...
-
oracle ora-02298
-
Where句のNot条件をAnd条件にし...
-
テーブルDROPできないのです。。。
-
テーブルに変更があったらCSV出力
-
accessのデータをoracleへinser...
-
1テーブルに対して別々の条件...
-
select文の結果から新しいテー...
-
フィールド数が異なるテーブル...
-
[materialized]マテリアライズ...
-
複数レコードの複数フィールド...
おすすめ情報