Q&A
解決済
4回答
35334閲覧
総合スコア185
Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。
SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。
0グッド
0クリップ
投稿2017/04/11 02:24
0
お世話になります。
データベースの、名前が入っている列(すべて2文字を想定) を一括で置き換えたいのですがなにがいけないのでしょうか。
個人情報テーブル NAME 顧客 太郎 顧客 太 顧客 愛 → これの名字部分をすべてテストに入れ替えたいです
update 個人情報テーブル
クエリ update 個人情報テーブ set substr(NAME,1,2) = 'テスト';
ora00927 記号がありません
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答4件
set substr(NAME,1,2) = 'テスト';
関数の結果をセットすることは出来ないかと思います。
以下、SQL Serverの例ですが、Oracleでも同じようなことができるかと思います。
UPDATE 個人情報テーブル SET NAME = replace(NAME, SUBSTRING(NAME,1,2),'テスト')
投稿2017/04/11 02:42
総合スコア102
ベストアンサー
SQL1update 個人情報テーブ 2set substr(NAME,1,2) = 'テスト';
SQL
1update 個人情報テーブ 2set substr(NAME,1,2) = 'テスト';
「個人情報テーブ」となっているのはタイプミスと信じて・・・ set句は 列名=xxx の形でないといけません。 またsubstrは文字列を抜き出すための関数です。置き換えの関数ではありません。
oracleでは位置指定の置換ができなかったと思いますので
SQL1update 個人情報テーブル 2set NAME = concat('テスト', substr(NAME, 3));
1update 個人情報テーブル 2set NAME = concat('テスト', substr(NAME, 3));
substr関数で3文字目以降を取り出し、concat関数で'テスト'と連結してNAME列に格納しています。
投稿2017/04/11 02:38
総合スコア883
SETの構文は、 set 列名=値 です。 なので、こんな感じでしょうか(未検証です)
SQL1UPDATE 個人情報テーブル 2SET NAME=CONCAT('テスト', SUBSTR(NAME,3))
1UPDATE 個人情報テーブル 2SET NAME=CONCAT('テスト', SUBSTR(NAME,3))
投稿2017/04/11 02:40
総合スコア17002
列名がある場所に式が書かれているからです
投稿2017/04/11 02:32
退会済みユーザー
総合スコア0
回答へのコメント
2017/04/11 02:36
2017/04/11 02:40
2017/04/11 02:41
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
update分の一部置換
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。