回答編集履歴

4

追記

2015/11/16 18:54

投稿

退会済みユーザー
test CHANGED
@@ -75,3 +75,75 @@
75
75
  )
76
76
 
77
77
  ```
78
+
79
+
80
+
81
+ ---
82
+
83
+
84
+
85
+ ```SQL
86
+
87
+ CREATE TABLE `test` (
88
+
89
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
90
+
91
+ `family_name` varchar(16) DEFAULT NULL,
92
+
93
+ `first_name` varchar(16) DEFAULT NULL,
94
+
95
+ PRIMARY KEY (`id`)
96
+
97
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
98
+
99
+
100
+
101
+ INSERT INTO `test` (`id`, `family_name`, `first_name`)
102
+
103
+ VALUES
104
+
105
+ (1,'山本','太郎'),
106
+
107
+ (2,'麻生','太郎'),
108
+
109
+ (3,'橋本','龍太郎'),
110
+
111
+ (4,'河野','太郎'),
112
+
113
+ (5,'石原','慎太郎'),
114
+
115
+ (6,'石破','茂'),
116
+
117
+ (7,'小泉','進次郎');
118
+
119
+ ```
120
+
121
+
122
+
123
+ このようなテーブルとデータがあるとき、以下のようなSQLで、並べ替えをしてあげる方が便利かと。
124
+
125
+
126
+
127
+ ```SQL
128
+
129
+ SELECT
130
+
131
+ id
132
+
133
+ , family_name
134
+
135
+ , first_name
136
+
137
+ , IF(first_name = '太郎', 1, 2) AS matchLevel
138
+
139
+ FROM test
140
+
141
+ WHERE first_name LIKE '%太郎%'
142
+
143
+ ORDER BY matchLevel
144
+
145
+ ```
146
+
147
+
148
+
149
+ ![イメージ説明](84bed8a5e5889adba2a156c9d11a880f.png)

3

追記

2015/11/16 18:54

投稿

退会済みユーザー
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- でも、システムとしては使いにくそう…こんな例で。
33
+ でも、システムとしては使いにくそう…こんな例で。「部分検索のつもり」で検索しているユーザーにとっては「不可解な」動きでしかないように思います。
34
34
 
35
35
 
36
36
 

2

追記

2015/11/16 17:06

投稿

退会済みユーザー
test CHANGED
@@ -30,12 +30,48 @@
30
30
 
31
31
 
32
32
 
33
- でも、システムとしては使いにくそう…
33
+ でも、システムとしては使いにくそう…こんな例で。
34
34
 
35
35
 
36
36
 
37
37
  ```
38
38
 
39
- |氏|名|
39
+ |氏    |名    |
40
+
41
+ ======================
42
+
43
+ |麻生   |太郎   |
44
+
45
+ ----------------------
46
+
47
+ |橋本   |龍太郎  |
40
48
 
41
49
  ```
50
+
51
+
52
+
53
+ ```SQL
54
+
55
+ SELECT *
56
+
57
+ FROM person
58
+
59
+ WHERE 名 LIKE IF(
60
+
61
+ EXISTS (
62
+
63
+ SELECT *
64
+
65
+ FROM person
66
+
67
+ WHERE 名 LIKE '太郎'
68
+
69
+ )
70
+
71
+ , '太郎'
72
+
73
+ , '%太郎%'
74
+
75
+ )
76
+
77
+ ```

1

修正

2015/11/16 17:01

投稿

退会済みユーザー
test CHANGED
@@ -27,3 +27,15 @@
27
27
  )
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ でも、システムとしては使いにくそう…
34
+
35
+
36
+
37
+ ```
38
+
39
+ |氏|名|
40
+
41
+ ```