ある条件に一致した部分だけ一括更新する、という処理をSQLで行いたいのですが、なにぶん初心者なもので要領をえません。どなたか知恵を授けていただけないでしょうか。
やりたいことなのですが、下のようにAテーブルがあって、その中に文字列型(8)のnumStrフィールドがあるとします。このフィールドに入っている値は「4桁の半角数字」か「6桁の半角数字」、あるいは「未記入状態」しかありません。もしこのnumStrフィールドが未記入ではないとき、値が6桁ならリーディング・ゼロ(桁合わせのための頭ゼロ)を2つ、値が4桁ならリーディング・ゼロを4つ追加したいというものです。
データベースはInterbaseを使用していますが、それ以外のデータベースのやり方でも構いません。ヒントだけでも結構です。
その他条件:
(1) numStrとusrNameともに未記入状態が許可されていて、空欄である可能性があります
(2) しかし運用上、numStrとusrNameの両方が空欄になることはありません
(3) numStrとusrNameはユニークな値ではないため、二つのフィールド値がまったく同じレコードが存在する可能性があります
(4)プライマリキーやIDのようなユニーク値のフィールドは設定されていません
説明が足りないところや不明な点はご指摘ください。
よろしくお願いします。
Table A構造:
numStr文字列(最大8文字)
usrName文字列(最大50文字)
現在numStrに格納されている値:
123456
0002
(未記入)
023493
000238
(未記入)
9876
更新によって書き直された値:
(リーディング・ゼロ追加済)
00123456
00000002
(未記入)
00023493
00000238
(未記入)
00009876
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
たとえば、
update A
set numStr = case numStrの長さ when 4 then '0000' when 6 then '00' else '' end || numStr
where numStr is not null;
みたいな感じでいいと思うのですが、パッとInterbaseのリファレンスを見た限りでは
文字列の長さを取得する関数はないようですね・・・。
Interbaseについて全く知識がないので的外れかもしれませんが、
http://www.geocities.jp/kimura804/rdb/InterBase/ …
こちらのページのようなプロシージャを作ったらうまくいくのかもしれません。
なにかの参考になれば幸いです。
お返事が遅れてすみません。
やっぱり一発でうまくいくSQLはないですよね・・・。
でもいろいろ勉強になりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) エクセル 3つの値の中からデータを抽出させる方法 4 2023/08/24 11:00
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスで入力したデータの順...
-
ExcelからAccessデータを検索す...
-
accessのフィールドに10桁の数...
-
「#エラー」の回避
-
FileMakerで、フィールドの値が...
-
Accessでボタンを押すと今日の...
-
追加クエリ実行時に入力した文...
-
FileMakerで繰り返しフィールド...
-
ACCESSでデータ変更箇所が分か...
-
差し込み文書のルールで if the...
-
住所の改行について
-
アクセス Access 時間の引き算
-
FileMakerで画像をまとめて書き...
-
WORD差し込み印刷:日付の処理 ...
-
ファイルメーカーの集計方法を...
-
FileMakerで外部保存PDFを開く方法
-
A1、A2、A3・・・とデータを増...
-
ワードでプルダウン項目を作りたい
-
Accessフォームで平均値の出し...
-
ファイルメーカー:計算フィー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「#エラー」の回避
-
アクセスで入力したデータの順...
-
ExcelからAccessデータを検索す...
-
差し込み文書のルールで if the...
-
accessのフィールドに10桁の数...
-
Access フィールド内の値で、...
-
Accessで値がnullの場合は計算...
-
フィールドの中のテキストを分...
-
Accessでボタンを押すと今日の...
-
access フィールドのサイズ(文...
-
FileMakerで、フィールドの値が...
-
MS-WORDで、あるフィールドに入...
-
ACCESSでデータ変更箇所が分か...
-
MS-ACCESSで中央値(ME...
-
ファイルメーカー複数フィール...
-
WORD差し込み印刷:日付の処理 ...
-
アクセス Access 時間の引き算
-
WORDフィールドコード一括編集
-
Wordでページ番号を計算式で入...
-
accessのVBAで変数名でフィ...
おすすめ情報