teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

微修正4

2016/09/03 11:44

投稿

tomari_perform
tomari_perform

スコア760

answer CHANGED
@@ -35,5 +35,4 @@
35
35
  (Oracleなら、USER_OBJECTS等でもテーブル名とカラム名は取得できる。)
36
36
 
37
37
  なお、本来であれば、たとえ1000個以上のテーブルがあっても、
38
- どんなテーブルがあり、どんなデータが格納されているかを把握し
38
+ どんなテーブルがあり、どんなデータが格納されているかを把握したいところ。
39
- 置換する事で、どの画面のどこの表示に影響するか把握できたうえで置換したいところ。

4

微修正3

2016/09/03 11:44

投稿

tomari_perform
tomari_perform

スコア760

answer CHANGED
@@ -1,4 +1,4 @@
1
- -評価だったので、少し編集。回答内容は変えてません。
1
+ -評価だったので、少し編集。
2
2
 
3
3
  > データベースの全テーブルから、特定の文字列検索したいのですが、
4
4
  何かいい方法はありませんか?
@@ -10,7 +10,7 @@
10
10
  1.全テーブルのVARCHAR等の全カラムについてのみ、以下のようなSQLで抽出する。
11
11
  ```SQL
12
12
  SELECT カラム名 as BEFORE
13
- , REPLACE(カラム名,'首相','総理) as AFTER
13
+ , REPLACE(カラム名,'首相','総理') as AFTER
14
14
  FROM テーブル名
15
15
  WHERE カラム名 like '%首相%'
16
16
  ;

3

微修正2

2016/09/03 11:43

投稿

tomari_perform
tomari_perform

スコア760

answer CHANGED
@@ -24,6 +24,16 @@
24
24
  ;
25
25
  ```
26
26
 
27
+ 上記SQLの作り方は、言語によって様々なので指定してほしいところ。
28
+ desc テーブル名; 等で
29
+ テーブルとカラムの一覧を取得してEXCEL等に貼り付けて、
30
+ ="SELECT "&A2&" FROM "&A1&" WHERE "&A2&" like '%首相%';"
31
+ とコピーすればすぐに作れる。
32
+
33
+ まとめて実行したい場合、SQL文の最後に実行結果を
34
+ テーブル名+カラム名のファイル名でファイル出力しても良いでしょう。
35
+ (Oracleなら、USER_OBJECTS等でもテーブル名とカラム名は取得できる。)
36
+
27
37
  なお、本来であれば、たとえ1000個以上のテーブルがあっても、
28
38
  どんなテーブルがあり、どんなデータが格納されているかを把握し、
29
39
  置換する事で、どの画面のどこの表示に影響するか把握できたうえで置換したいところ。

2

微修正

2016/09/03 11:42

投稿

tomari_perform
tomari_perform

スコア760

answer CHANGED
@@ -1,4 +1,4 @@
1
- なぜか、-評価だったので、少し編集。回答内容は変えてません。
1
+ -評価だったので、少し編集。回答内容は変えてません。
2
2
 
3
3
  > データベースの全テーブルから、特定の文字列検索したいのですが、
4
4
  何かいい方法はありませんか?
@@ -19,7 +19,7 @@
19
19
  2.上記SQLで引っかかったカラムに対して、以下のSQLを実行する。
20
20
  ```SQL
21
21
  UPDATE テーブル名
22
- カラム名 = REPLACE(カラム名,'首相','総理)
22
+ カラム名 = REPLACE(カラム名,'首相','総理')
23
23
  WHERE カラム名 like '%首相%'
24
24
  ;
25
25
  ```

1

なぜか、-評価だったため。

2016/09/03 11:37

投稿

tomari_perform
tomari_perform

スコア760

answer CHANGED
@@ -1,16 +1,29 @@
1
+ なぜか、-評価だったので、少し編集。回答内容は変えてません。
2
+
1
3
  > データベースの全テーブルから、特定の文字列検索したいのですが、
2
4
  何かいい方法はありませんか?
3
5
  > システム上「首相」と表示している画面は複数あります。
4
6
  > 「首相」という文字列は、すべてデータベースで設定されているとします。
5
7
 
6
- 面倒であれば、プログラムのソースはgrep置換で変更。
7
- テーブルについては、全テーブルのVARCHAR等の全カラムについてのみ、
8
- 全てUPDATEにて、REPLACE文を投げてはいかがでしょうか。
9
- (システム要件を満たせるかは謎すが
8
+ 以下の手順しょうか
10
9
 
11
- ちなみに、どこに存在するかは、上記UPDATE文をSELECT文に変えれば、
10
+ 1.全テーブルのVARCHAR等の全カラムついてのみ以下のようなSQLで抽出する
11
+ ```SQL
12
+ SELECT カラム名 as BEFORE
13
+ , REPLACE(カラム名,'首相','総理) as AFTER
12
- 見つけられるはずです。
14
+ FROM テーブル名
15
+ WHERE カラム名 like '%首相%'
16
+ ;
17
+ ```
13
18
 
19
+ 2.上記SQLで引っかかったカラムに対して、以下のSQLを実行する。
20
+ ```SQL
21
+ UPDATE テーブル名
22
+ カラム名 = REPLACE(カラム名,'首相','総理)
23
+ WHERE カラム名 like '%首相%'
24
+ ;
25
+ ```
26
+
14
27
  なお、本来であれば、たとえ1000個以上のテーブルがあっても、
15
28
  どんなテーブルがあり、どんなデータが格納されているかを把握し、
16
29
  置換する事で、どの画面のどこの表示に影響するか把握できたうえで置換したいところ。