当前位置: 首页 > 面试题库 >

MYSQL区分大小写搜索utf8_bin字段

莘康裕
2023-03-14
问题内容

我创建了一个表并将排序规则设置为 utf8
,以便能够向字段添加唯一索引。现在我需要进行不区分大小写的搜索,但是当我使用collat​​e关键字执行一些查询时,我得到了:

mysql> select * from page where pageTitle="Something" Collate utf8_general_ci;

错误1253(42000):COLLATION’utf8_general_ci’对字符集’latin1’无效

mysql> select * from page where pageTitle="Something" Collate latin1_general_ci;

错误1267(HY000):操作’=’的排序规则(utf8_bin,IMPLICIT)和(latin1_general_ci,EXPLICIT)的非法混合

我对SQL非常陌生,所以我想知道是否有人可以提供帮助。


问题答案:

MySQL中的字符串具有字符集和排序规则。utf8是字符集,而utf8_bin是其归类之一。要将字符串文字与utf8列进行比较,请使用_charset表示法将其前缀转换为utf8:

_utf8 'Something'

现在,排序规则仅对某些字符集有效。该区分 大小写 的UTF8归类似乎是utf8_bin,您可以指定,如:

_utf8 'Something' collate utf8_bin

通过这些转换,查询应该可以工作:

select * from page where pageTitle = _utf8 'Something' collate utf8_bin

_charset前缀适用于字符串文字。要更改字段的字符集,可以使用CONVERT …
USING。当您想将pageTitle字段转换为另一个字符集时,这很有用:

select * from page 
where convert(pageTitle using latin1) collate latin1_general_cs = 'Something'

要查看名为“ TAB”的表中名为“ col”的列的字符和排序规则,请尝试:

select distinct collation(col), charset(col) from TAB

可以找到所有字符集和排序规则的列表:

show character set
show collation

utf8的所有有效归类可以通过以下方式找到:

show collation where charset = 'utf8'


 类似资料:
  • 我有一本区分大小写的字典, 所以我可以在这本字典里找到区分大小写的键。 例如,我可以有下面的键值对, {test,10} {测试,20} {test1,30} {test2,40} ... 当有人传递密钥时,我想检索该值。检索应该部分不区分大小写,这意味着,如果匹配准确的大小写,则返回区分大小写的结果,如果区分大小写的键不存在,则检索区分大小写的键值。 例如,在字典中插入上述值 如果用户通过“测试

  • 问题内容: 我有一个Lucene索引,该索引当前区分大小写。我想添加的 选项 有不区分大小写作为后备的。这意味着与案例匹配的结果将获得更大的权重,并且将首先出现。例如,如果结果数限制为10,并且有10个匹配项符合我的情况,那就足够了。如果仅找到7个结果,则可以从不区分大小写的搜索中再添加3个结果。 我的案子实际上更复杂,因为我有不同重量的物品。理想情况下,匹配“错误”的表壳会增加一些重量。不用说,

  • 问题内容: 我正在尝试使用JavaScript中的两个字符串进行不区分大小写的搜索。 通常情况如下: 该标志将不区分大小写。 但是我需要搜索第二个字符串。没有标志,它可以完美地工作: 如果我在上面的示例中添加标志,它将搜索searchstring而不是变量“ searchstring”中的内容(下一个示例不起作用): 我该如何实现? 问题答案: 是的,使用而不是。调用的结果将返回匹配自身的实际字符

  • 问题内容: 和其他比较运算符等的默认行为区分大小写。 是否可以使它们不区分大小写? 问题答案: 从10gR2开始,Oracle允许通过设置和会话参数来微调字符串比较的行为: 您还可以创建不区分大小写的索引: 该信息来自Oracle不区分大小写的搜索。文章提到了,但似乎也适用于旧版本。 在10gR2之前的版本中,这实际上是做不到的,如果不需要 区分重音符号的 搜索,通常的方法是只对列和搜索表达式都使

  • 本文向大家介绍在Mongo中区分大小写的搜索?,包括了在Mongo中区分大小写的搜索?的使用技巧和注意事项,需要的朋友参考一下 您可以在“ $regex”的帮助下限制MongoDB中不区分大小写的搜索。语法如下- 您可以使用其他正则表达式。语法如下- 为了理解这个概念,让我们用文档创建一个集合。使用文档创建集合的查询如下- 在method的帮助下显示集合中的所有文档。查询如下- 以下是输出- 如果

  • 问题内容: 我尝试在elasticsearch.yml文件中创建一个条目,以针对要点中提到的内容创建自定义分析器: https //gist.github.com/1403902 但我得到以下错误 我仍然不知道如何做到这一点。我已经在stackoverflow上搜索了相同的内容,并得到了类似的回复(如上述要点所述) 请给我一个例子,我可以测试。 问题答案: 由于配置文件在启动时是只读的,因此要使更