回答編集履歴

1

ついき

2019/01/11 02:04

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -9,3 +9,51 @@
9
9
  order by (length(replace(cont,'りんご',''))-length(cont) + length(replace(cont2,'りんご',''))-length(cont2))
10
10
 
11
11
  ```
12
+
13
+
14
+
15
+ ---
16
+
17
+ 情報を小出しにして、使えない、自分で試し済みの回答がついた結果で得したのはPVがあがった運営ですか?
18
+
19
+
20
+
21
+ nullが原因だと分かってて、自分でnullにしてるんですから、こうすればいいです。
22
+
23
+
24
+
25
+ ```SQL
26
+
27
+ SELECT cont,cont2,0 as cont3,0 as cont4 FROM fruit WHERE cont LIKE '%りんご%' or cont2 LIKE '%りんご%'
28
+
29
+ union all
30
+
31
+ SELECT 0,0,cont3,cont4 FROM vegi WHERE cont4 LIKE '%りんご%'
32
+
33
+ order by (LENGTH(cont) - LENGTH(REPLACE(cont,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) DESC
34
+
35
+ ```
36
+
37
+
38
+
39
+ selectでnullを設定している説明がまた本当じゃなくて、実際のcont1がnull許容で、セレクトしたカラムにnullが入ってるなら`ifnull((LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))),0)`とかってやればいいです(ifnullは多分MySQL依存)
40
+
41
+
42
+
43
+ 例えば↓みたいなことすれば、nullを足すとどうなるかとか、ifnullでどうなるかとか分かります。
44
+
45
+ ```SQL
46
+
47
+ SELECT (LENGTH(cont) - LENGTH(REPLACE(cont,"りんご",""))),(LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))), ifnull((LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))),0), (LENGTH(cont) - LENGTH(REPLACE(cont,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) FROM
48
+
49
+ (SELECT cont,cont2,null as cont3,null as cont4 FROM fruit WHERE cont LIKE '%りんご%' or cont2 LIKE '%りんご%'
50
+
51
+ union all
52
+
53
+ SELECT null,null,cont3,cont4 FROM vegi WHERE cont4 LIKE '%りんご%') as r
54
+
55
+ ```
56
+
57
+
58
+
59
+ teratailは、参考書的に使うにはまったくやりにくいのでお薦めできません