質問編集履歴
3
状況の変化
test
CHANGED
File without changes
|
test
CHANGED
@@ -29,8 +29,8 @@
|
|
29
29
|
name varchar(255)
|
30
30
|
);
|
31
31
|
|
32
|
-
INSERT to newname(idx,name)
|
32
|
+
INSERT into newname(idx,name)
|
33
|
-
select
|
33
|
+
select
|
34
34
|
id
|
35
35
|
,name
|
36
36
|
,case
|
@@ -43,8 +43,7 @@
|
|
43
43
|
from test
|
44
44
|
|
45
45
|
```
|
46
|
-
この段階で1
|
46
|
+
この段階で1136番のエラが返ってきます。
|
47
|
-
構文エラでしょうか。どこが間違っているのかよくわかりません。
|
48
|
-
in
|
47
|
+
カラムの数があっていないとあります。idx,nameとid,nameの指定なのでカラムの数は合っていると思うのですが、どこを見落としているのでしょうか。
|
49
48
|
|
50
49
|
|
2
追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,14 +16,35 @@
|
|
16
16
|
|
17
17
|
ただし、一つ残すそのデータにもともと含まれていた空白はそのままにしたいです。田中 太郎でも田中 太郎でも、どれでも良いから一つ空白が入っていたままの状態で残したいです。
|
18
18
|
|
19
|
+
|
20
|
+
考えたことは以下です。
|
21
|
+
①nameテーブルから全ての空白をreplaceにより詰めたデータを、一時的なテーブルの中に追加する。(newnameというテーブル名)
|
22
|
+
②newnameの中で重複するデータを見つけてidの若い方を残し、それ以外を削除する。
|
23
|
+
③nameテーブルに於いてnewnameにあるidと同じidを見つけたら削除する。 という形式でコードを書けば、空白は元のままで重複する余分なデータを削除できるのではないかと考えたのですが、無理はないでしょうか。無理がなければ、 このようなコードはどのようにしたら書けるのでしょうか。
|
24
|
+
|
19
25
|
試したコードは
|
20
|
-
```sql
|
26
|
+
```mysql
|
27
|
+
create temporary table newname(
|
28
|
+
idx int,
|
29
|
+
name varchar(255)
|
30
|
+
);
|
31
|
+
|
32
|
+
INSERT to newname(idx,name)
|
33
|
+
select *
|
34
|
+
id
|
35
|
+
,name
|
36
|
+
,case
|
37
|
+
when instr(name,' ')>0
|
21
|
-
|
38
|
+
then replace(replace(name,' ',''),' ','')
|
39
|
+
|
40
|
+
when instr(name,' ')>0
|
22
|
-
|
41
|
+
then replace(replace(name,' ',''),' ','')
|
42
|
+
end as newname
|
43
|
+
from test
|
23
44
|
|
24
45
|
```
|
25
|
-
|
46
|
+
この段階で1064番のエラが返ってきます。
|
26
|
-
replaceでは正規表現?が使えないのでしょうか。一つの空白をなくすことはできましたが、それでは全角半角の区別、空白の連続回数が想定できません。何より最終的なテーブルには空白がない状態の文字列が残ってしまうことになります。
|
27
|
-
|
47
|
+
構文エラでしょうか。どこが間違っているのかよくわかりません。
|
28
|
-
|
48
|
+
insert to newnameのあたりだと英語で書かれているように見えます。
|
29
49
|
|
50
|
+
|
1
脱字
test
CHANGED
File without changes
|
test
CHANGED
@@ -25,4 +25,5 @@
|
|
25
25
|
などです。ただこのコードでは、最初のそれでは変更された行数が0でした。何故成功しないのかが解らないのですが、成功したところで空白が詰められた状態のテーブルが出来上がる気がします。
|
26
26
|
replaceでは正規表現?が使えないのでしょうか。一つの空白をなくすことはできましたが、それでは全角半角の区別、空白の連続回数が想定できません。何より最終的なテーブルには空白がない状態の文字列が残ってしまうことになります。
|
27
27
|
どのようなコードを入力すれば、やりたいことが実現するでしょうか。
|
28
|
+
実現は不可能でしょうか。
|
28
29
|
|