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

回答編集履歴

1

追記

2018/11/05 04:32

投稿

yambejp
yambejp

スコア118405

answer CHANGED
@@ -3,7 +3,10 @@
3
3
  id int primary key,
4
4
  val1 varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci ,
5
5
  val2 varchar(100) CHARACTER SET utf8 COLLATE utf8_bin );
6
+ insert into tbl values
6
- insert into tbl values(1,'とうこう','とうこう'),(2,'どうこう','どうこう');
7
+ (1,'とうこう','とうこう'),
8
+ (2,'どうこう','どうこう'),
9
+ (3,'xうこう','xうこう');
7
10
  ```
8
11
 
9
12
  としたとき、val1はブレを吸収するので
@@ -18,4 +21,17 @@
18
21
  select * from tbl where val2='とうこう';
19
22
  select * from tbl where val2='どうこう';
20
23
  ```
21
- それぞれ正確に該当するものしかヒットしません。
24
+ それぞれ正確に該当するものしかヒットしません。
25
+
26
+ 逆に属性を無視して処理するにはstrcmpを利用してcollateを指定します
27
+
28
+ ```SQL
29
+ select * from tbl where not STRCMP(val1 COLLATE utf8_unicode_ci,'どうこう');
30
+ select * from tbl where not STRCMP(val2 COLLATE utf8_unicode_ci,'どうこう');
31
+ ```
32
+ ※両方ヒット
33
+ ```
34
+ select * from tbl where not STRCMP(val1 COLLATE utf8_bin,'どうこう');
35
+ select * from tbl where not STRCMP(val2 COLLATE utf8_bin,'どうこう');
36
+ ```
37
+ ※厳密にヒット