jjzjj

collation

全部标签

MySQL 不区分大小写但区分重音 UTF8 唯一键

我知道SF上有很多类似的问题,但我认为我的问题足够不同,值得提出一个新问题。我有一个表,其中有一个列作为utf8和utf8_unicode_ci。它还在此列上有一个唯一的键以及标记语言代码的另一列。列中的数据采用多种不同的文字(带有不同口音的拉丁文、中文和俄文等)。问题是有时我会想输入两个具有不同含义的单词,这些单词的区别仅在于变音符号(即西类牙语ano与año)。由于utf8_unicode_ci不区分大小写和重音,它认为这些是相同的,只会让我输入一个。太糟糕了。理想情况下,我只是将整个列切换到一些不区分大小写但区分重音的排序规则,但这似乎不存在。许多不同的东西都使用这个列,所以我宁

php - 在 mysql 或 php 中使用 utf 字符排序?最佳解决方案

我正在使用MySQL选择要排序的西类牙语歌曲列表。下面是查询返回的名称列表:¡Decirevilla!阿罕布拉123帕西托非洲阿罗兹决定排序后的列表应该是这样的:123帕西托非洲阿罕布拉阿罗兹¡Decirevilla!决定在我阅读了所有研究之后,我得出结论,没有合理的方法可以使用MySQL实现这一点。我试过排序规则、字符集等...但字符¡、?等...无法根据我想要的结果进行排序。甚至Á也没有按照我想要的方式排序...问题1:这是一个合理的结论吗?我相信实现此目的的唯一方法是将结果传递给php中的数组,然后使用自定义函数对数组进行排序...所有这些都使用函数usort(需要按值排序,但我

mysql - 创建自定义 MySQL 排序规则

你能帮助创建自定义mysql排序规则吗?表将包含西里尔字符和拉丁字符的混合数据。一些数据将以数字开头。我需要列出(并排序):所有西里尔字母在前比所有带有拉丁字符的数据以字母开头的数据结尾。有可能在mysql中实现吗?提前致谢!!! 最佳答案 MySQLdevsite给出了添加新归类的步骤。根据您的描述,您似乎可以在不重建的情况下定义规则。如果规则更复杂,它仍然可以完成,但会更加努力,因为有必要添加用于比较的C函数并重建MySQL 关于mysql-创建自定义MySQL排序规则,我们在Sta

mysql - MySQL 中的 UTF8 字符串比较

我们在MySQL5中遇到关于大小写和重音的utf8字符串比较问题:根据我收集到的信息,MySQL通过考虑“字符组应该被视为相等”来实现排序规则。例如,在utf8_unicode_ci排序规则中,所有字母“EÉÈÊeéèê”都在同一个框中(连同“e”的其他变体)。因此,如果您有一个包含["video","vidéo","vidÉo","vidÊo","vidêo","vidÈo","vidèo","vidEo"]的表(在声明为ut8_general_ci整理):当要求MySQL根据该列对行进行排序时,排序是随机的(例如,MySQL不强制执行“é”和“É”之间的排序规则),当要求MySQL

mysql - 适当的字符编码/排序规则来存储 URL?

我的Web应用程序将URL段存储在数据库中。这些URL片段基于用户提交的内容。对于将出现在URL中的字符串,我应该使用什么排序规则?我的假设是ASCIIGeneralCI(?)基于这个问题:WhichcharactersmakeaURLinvalid? 最佳答案 据我所知,这并不重要。URL中的有效字符以我知道的任何字符集表示,我不会在表和列之间使用不同的排序规则——在任何尝试加入它们或执行任何其他操作时,你都会遇到“非法排序规则混合”问题一种跨列或跨表操作(参见我最近的问题here)。当然,如果我错了,请纠正我。

mysql - 表情符号未正确存储在 MySQL 5.6 中,排序规则为 utf8mb4

我正在尝试将表情符号存储到我服务器的数据库中。我使用AWSEC2实例作为服务器,我的服务器详细信息如下:OS:ubuntu0.14.04.1MySQLversion:5.6.19-0ubuntu0.14.04.1-(Ubuntu)Databaseclientversion:libmysql-mysqlnd5.0.11-dev-20120503我使用以下SQL在服务器中创建了一个数据库测试和表表情符号:CREATEDATABASEIFNOTEXISTS`test`DEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;USE`test`;C

MySQL DISTINCT 和重音符号

在Debian上运行的MySQL数据库(版本5.5.41-0+wheezy1-log)。表hotels有一个列nameVARCHAR(128)并且引擎是InnoDB。CREATETABLE`hotels`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT`name`varchar(128)NOTNULLDEFAULT''COMMENT'HotelName',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=0DEFAULTCHARSET=utf8;这个表中有两条记录:1BESTWESTERNPREMIERLECAR

mysql - 无法在 mysql 中插入 unicode 字形

使用此查询:UPDATE`arg`.`arg_currency`SET`symbol`='?'WHERE`arg_currency`.`id`=2LIMIT1;我收到这个错误:Warning:#1366Incorrectstringvalue:'\xF0\x90\x80\xA4'forcolumn'symbol'atrow1symbol列是CHAR(1)utf8_roman_ci,但我都尝试将排序规则更改为_general和_unicode,和字符到4,但我仍然遇到同样的错误。我做错了什么?(我都尝试通过自定义php代码和phpmyadmin插入它) 最佳答

mysql - Django 中区分大小写的搜索,但在 Mysql 中被忽略

我在Django模型中有一个字段用于存储唯一(哈希)值。事实证明,数据库(MySQL/inno)不会对这种类型(VARCHAR)进行区分大小写的搜索,即使我明确告诉Django进行区分大小写的搜索也不会Document.objects.get(hash__exact="abcd123")。所以“abcd123”和“ABcd123”都被返回,这是我不想要的。classdocument(models.Model):filename=models.CharField(max_length=120)hash=models.CharField(max_length=33)我可以将“哈希字段”更改

java - H2 内存DB在MySQL模式下对ORDER BY的处理方式不同

我有一个对包含电子邮件地址的VARCHAR列执行ORDERBY的查询。如果我访问我的物理MySQL数据库,它会忽略ORDERBY中的大小写。但是,我的h2内存数据库是区分大小写的。它设置为MySQL模式。谁知道这是为什么? 最佳答案 在数据库中评估字符串时是否区分大小写由排序规则决定。检查H2上的整理处理:http://www.h2database.com/html/grammar.html#set_collation 关于java-H2内存DB在MySQL模式下对ORDERBY的处理方