我有一个模式“UTF8 - UTF-8的Unicode”的字符集和“utf8_spanish_ci”的排序规则。
里面所有的表都具有相同的字符集和校对规则的InnoDB提到。
这里谈到的问题:
与像查询
SELECT *
FROM people p
WHERE p.NAME LIKE '%jose%';
我得到83个结果行。 我应该有84分的结果,因为我知道这一点。
更改其中用于:
WHERE p.NAME LIKE '%JOSE%';
我得到完全相同的83行。 有了这样何塞,何塞,何塞等组合报告的所有相同的83行。
问题是当口音玩游戏。 如果这样做:
WHERE p.NAME LIKE '%josé%';
我没有得到任何结果。 0行。
但是,如果我这样做:
WHERE p.NAME LIKE '%JOSÉ%';
我得到的只是一个结果行,所以1行。 这是重音“何塞”和资本的唯一排至极脑水肿。
我试着与何塞,何塞或或任何组合我做什么,只要信重音大写撑与否,因为它确实是存储在数据库中,并返回剧照只有一行。 如果我突然改变我在JOSE资本做任何组合“E”代表“é”,它不返回行。
所以,结论:
- 情况下,如果没有拉丁字符在游戏中扮演不敏感。
- 情况下,如果出现拉丁字符敏感。
- 区分重音,好像我搜索JOSE或何塞,我只得到83行,而不是84行,我需要。
我想要的是?
- 要搜索“何塞”,“何塞”,“何”,“何塞”,“何塞”,“何塞”,“何塞”,...不得不返回84行,我知道存在。 我怎么把我的searchs为不区分大小写和“拉丁”不敏感。
类似的解决方案COLLATION
上LIKE
不为我工作的,不知道为什么?
我能做什么?
提前致谢!
编辑:
如果我做sometingh这样的:
WHERE p.NAME LIKE '%jose%' COLLATE utf8_general_ci;
我得到的错误:
COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
我已经改变了列所有可能的排序规则呢!
如果我这样做:
WHERE p.NAME LIKE _utf8 '%jose%' COLLATE utf8_general_ci;
同样的83行被报道,就好像我做了什么?