回答編集履歴
4
追記
answer
CHANGED
@@ -36,4 +36,40 @@
|
|
36
36
|
, '太郎'
|
37
37
|
, '%太郎%'
|
38
38
|
)
|
39
|
-
```
|
39
|
+
```
|
40
|
+
|
41
|
+
---
|
42
|
+
|
43
|
+
```SQL
|
44
|
+
CREATE TABLE `test` (
|
45
|
+
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
46
|
+
`family_name` varchar(16) DEFAULT NULL,
|
47
|
+
`first_name` varchar(16) DEFAULT NULL,
|
48
|
+
PRIMARY KEY (`id`)
|
49
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
50
|
+
|
51
|
+
INSERT INTO `test` (`id`, `family_name`, `first_name`)
|
52
|
+
VALUES
|
53
|
+
(1,'山本','太郎'),
|
54
|
+
(2,'麻生','太郎'),
|
55
|
+
(3,'橋本','龍太郎'),
|
56
|
+
(4,'河野','太郎'),
|
57
|
+
(5,'石原','慎太郎'),
|
58
|
+
(6,'石破','茂'),
|
59
|
+
(7,'小泉','進次郎');
|
60
|
+
```
|
61
|
+
|
62
|
+
このようなテーブルとデータがあるとき、以下のようなSQLで、並べ替えをしてあげる方が便利かと。
|
63
|
+
|
64
|
+
```SQL
|
65
|
+
SELECT
|
66
|
+
id
|
67
|
+
, family_name
|
68
|
+
, first_name
|
69
|
+
, IF(first_name = '太郎', 1, 2) AS matchLevel
|
70
|
+
FROM test
|
71
|
+
WHERE first_name LIKE '%太郎%'
|
72
|
+
ORDER BY matchLevel
|
73
|
+
```
|
74
|
+
|
75
|
+

|
3
追記
answer
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
)
|
15
15
|
```
|
16
16
|
|
17
|
-
でも、システムとしては使いにくそう…こんな例で。
|
17
|
+
でも、システムとしては使いにくそう…こんな例で。「部分検索のつもり」で検索しているユーザーにとっては「不可解な」動きでしかないように思います。
|
18
18
|
|
19
19
|
```
|
20
20
|
|氏 |名 |
|
2
追記
answer
CHANGED
@@ -14,8 +14,26 @@
|
|
14
14
|
)
|
15
15
|
```
|
16
16
|
|
17
|
-
でも、システムとしては使いにくそう…
|
17
|
+
でも、システムとしては使いにくそう…こんな例で。
|
18
18
|
|
19
19
|
```
|
20
|
-
|氏|名|
|
20
|
+
|氏 |名 |
|
21
|
+
======================
|
22
|
+
|麻生 |太郎 |
|
23
|
+
----------------------
|
24
|
+
|橋本 |龍太郎 |
|
25
|
+
```
|
26
|
+
|
27
|
+
```SQL
|
28
|
+
SELECT *
|
29
|
+
FROM person
|
30
|
+
WHERE 名 LIKE IF(
|
31
|
+
EXISTS (
|
32
|
+
SELECT *
|
33
|
+
FROM person
|
34
|
+
WHERE 名 LIKE '太郎'
|
35
|
+
)
|
36
|
+
, '太郎'
|
37
|
+
, '%太郎%'
|
38
|
+
)
|
21
39
|
```
|
1
修正
answer
CHANGED
@@ -12,4 +12,10 @@
|
|
12
12
|
, '札幌市東'
|
13
13
|
, '%札幌市東%'
|
14
14
|
)
|
15
|
+
```
|
16
|
+
|
17
|
+
でも、システムとしては使いにくそう…
|
18
|
+
|
19
|
+
```
|
20
|
+
|氏|名|
|
15
21
|
```
|