- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 mysql 数据库,我需要在其中对 varchar 列执行搜索。所有数据都以 latin1 编码。有时这些列中有西方重音字符(对我来说几乎总是法语。)使用默认排序规则 (latin1_swedish_ci) 对我来说一直很好。但是现在我遇到了一些包含变音符号的数据的问题。如果我搜索“nusserhof”,我希望 mysql 返回“nüsserhof”,但事实并非如此。将排序规则更改为 latin1_german1_ci 可以从最简单的意义上解决问题,例如此查询有效,返回包含单词“nüsserhof”的所有行:
select * from mytable where mycolumn like '%nusserhof%' collate latin1_german1_ci;
但是如果我添加一个 order by 子句,它就不再有效了。这不会返回任何包含单词“nüsserhof”的行:
select * from mytable where mycolumn like '%nusserhof%' order by mycolumn collate latin1_german1_ci;
令人惊讶的是,我在这里或通过谷歌找不到任何关于此的信息。这是预期的行为吗?作为解决方法,我只是放弃顺序,并在 PHP 中选择之后进行排序。但似乎我应该能够让它工作。
最佳答案
Is this expected behavior?
是的,是的。
在瑞典语中,字形 ü
代表字母 tyskt y(“德语 Y”),因此位于 latin1_swedish_ci
之下它是字母 y
而不是 u
的变体。如果应用该排序规则,您要搜索 where mycolumn like '%nysserhof%'
,将返回包含 nüsserhof
的记录。
在德语中,字形 ü
表示基本字形的重音变体(特别是元音变音),因此在 latin1_german1_ci
之下。正如预期的那样,它是字母 u
的变体。因此,在此排序规则下运行搜索时,您会获得所需的结果。
正是由于这种局部差异,我们必须为我们的数据选择合适的排序规则:在一般情况下,没有一种排序规则总是合适的。
您在应用 ORDER BY
时观察到的问题源于对 COLLATE
关键字的误解:它不是 的一部分>SELECT
命令(这样它指示 MySQL 使用该排序规则进行命令中的所有比较);相反,它是紧接在前的字符串的一部分(这样它指示 MySQL 仅对紧接在前的字符串使用该显式排序规则)。
也就是说,在您的第一种情况下,显式 latin1_german1_ci
归类应用于带有 coercibility 的 '%nusserhof%'
字符串文字的 0; mycolumn
的排序规则(大概是 latin1_swedish_ci
)的强制性为 2。由于前者的值较低,因此在计算表达式时使用它。
在第二种情况下,显式 latin1_german1_ci
排序规则应用于 ORDER BY
子句中的 mycolumn
:因此排序结果将放置 'nüsserhof'
在 'nu'
和 'nv'
之间,而不是在 'ny'
和 'nz 之间'
。但是,显式排序规则不再适用于 WHERE
子句中的过滤器表达式,因此将应用该列的默认排序规则。
如果 mycolumn
中的数据全部为德语,您只需更改其默认排序规则,而不必再担心在 SQL 命令中指定显式排序规则:
ALTER TABLE mytable MODIFY mycolumn <type> COLLATE latin1_german1_ci
关于mysql collate latin1_german1_ci 不适用于 order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20099847/
Google Web字体上的某些字体支持多个“字符集”。关键是,如果我使用的Web字体仅提供“拉丁”字形,那么将页面翻译成不支持该字形的语言的用户将清楚地注意到困惑的文本。 我希望我的网络字体能够支持
我有(我相信)一个独特的情况;有点困惑。这是交易。 情况:我有一个单一语言的网站,其中所有内容(内容、链接)都使用非拉丁字符。 (西里尔文)(utf-8) 该网站旨在将全局读/说俄语的人联系起来。 问
我在数据库中有 10 个表。其中 9 个只存储 Latin-1 支持的标准 ascii 1 字节字符的数据。其中 1 个要求我存储仅受 UTF8 支持的特殊字符。我想使用相同的 MySQL 连接对象(
我想在 Windows 中从 eclipse 执行 Pig 脚本。我已关注this link 。但它不起作用。是否需要任何插件才能做到这一点?或者只有 pig.jar 就可以了? 最佳答案 试试这个,
题目地址:https://leetcode.com/problems/goat-latin/description/ 题目描述 Asentence S is given, composed of
我正在开发一个将普通单词转换为 pig 拉丁语的函数,但我无法将所有内容组合在一起;它必须适用于加州、手套和八。什么地方不正常? function translate(word) {
我正在尝试编写一个 pig 拉丁语翻译器,但我的网页一直显示未定义,并且无法从文本区域读取。 html 看起来不错,但最终用户需要输入的文本区域中的文本未正确显示。我尝试使用 .textContent
我写这封信是因为今天我遇到了一个问题,尽管到处搜索并尝试了许多不同的语句,但我无法以任何方式解决。 我有这个输入文件: 3 {(car pen house glass)} 5 {(battery ph
我有一个以前用 Latin-1 编码的文件。现在,当我打开这个文件时,我只得到原始编码。即状态行中的 -t:。文件中可能有一些非 Latin-1 字符,至少可以打开其他 Latin-1 文件。 我只想
我正在编写一个程序,它接受一个字符串,将其拆分为单词,将单词转换为 pig 拉丁语,然后返回结果字符串。我已经让它工作到一定程度了。 例如,如果我在程序中输入这些不以元音开头的单词,我会得到: pig
#include #include #include #define isvowel(v) (v=='a' || v=='e' || v=='i' || v=='o' || v=='u') in
所以我是编码的新手,我遇到了一些问题...我的程序应该要求用户输入,并且需要假设所有输入都是小写...并且需要假设没有额外的空格,并且需要假设它以句点结尾。然后该程序会将文本翻译成 pig latin
希望您一切顺利。 我对 Java 和这个网站都很陌生。虽然这可能看起来很长,但我只需要两件事的帮助,所以请帮忙,就像我说的,我对这一切都很陌生,所以越彻底越好。我必须做一个项目,我们必须将常规英语单词
我刚刚收到一个 SQL 插入脚本,但它在重复键输入时失败了: 我正在尝试插入: 1)蒙大拿 2)蒙大拿 我的表都是utf8_spanish2_ci, 谁能解释为什么会这样? 最佳答案 utf8_spa
我想编写一个函数,它将接受一个字符串并将单词转换为 Pyg 拉丁语。这意味着: 如果单词以元音开头,则在末尾添加“-way”。示例:“ant”变成“ant-way”。 如果单词以辅音簇开头,则将该辅音
所以我应该使用 stringConvertToPigLatin(string word) 函数将英语单词转换为 Pig Latin。我在网上能找到的所有答案都是使用 char[],我不允许这样做。如果
这看起来像是家庭作业,但请放心,这不是家庭作业。只是我们在 c++ 类(class)中使用的书中的一个练习,我正在尝试提前阅读指针。 书上的练习告诉我将一个句子拆分成标记,然后将它们中的每一个转换成
所以,我尝试并尝试制作这个 c++ pig 拉丁语程序,但它就是行不通。这是我的代码: int main() { string tmp = ""; char a; cout << "String: "
我最近在工作中遇到了这个问题,是关于pig flatten的。我用一个简单的例子来表达它 两个文件 ===文件1=== 1_a 2_b 4_d ===file2(制表符分隔)=== 1个 2乙 3c
在 Pig 中执行多级过滤后,我得到以下结果 - (2343433,Argentina,2015,Sci-Fi) (2343433,France,2015,Sci-Fi) (2343433,Germa
我是一名优秀的程序员,十分优秀!