gpt4 book ai didi

mysql - MySQL 中的 Propel 和二进制字符串

转载 作者:行者123 更新时间:2023-11-29 14:33:34 26 4
gpt4 key购买 nike

我想区分字符 cčeé .

是否可以使用 Propel 处理 mysql 的二进制字符串?或者我可以在没有 Propel 的情况下直接在我的 MySQL 数据库中处理它(仅适用于一个表,其他一些表仍然应将其视为相同)。但是,查询仍将使用 Propel 执行(Propel 在查询中支持 BINARY 吗?)。

推进 VARBINARY仅映射到 MySQL BLOB (与 Propel BLOB 相同)和 Propel VARBINARYBLOB使用起来似乎相当复杂(它们返回一个资源 ID)。

所以我尝试了Propel CLOB ,映射到 MySQL LONGTEXT 。这在使用中效果很好,但话又说回来 eé是相同的。所以和我现在的VARCHAR没有什么不同.

目前我使用的是长度为 50 的 VARCHAR。

最佳答案

有关排序规则的一般信息

使用 MySQL 排序规则,您可以指定如何比较存储在列中的不同字符。要更好地了解每种排序规则如何处理字符,您可以查看 collation-charts.org .

二进制排序规则将以不同方式对待每个字符,因此像 e 这样的字符和é不一样。

要更好地了解排序规则的工作原理,您还可以查看 Turkish UTF-8 collation of MySQL 。在那里你会看到ğg在土耳其语中,哪些是单独的字符被视为不同的字符,而其他字符则被视为相同。

排序规则不仅指定哪些字符相同,还指定在列后排序时它们的排序顺序。

在本例中您的选择将是 utf8_bin .

Propel 中排序规则的使用

要在 Propel 中设置所有内容,您可以使用 <vendor> schema.xml 中的标记:

<column name="tag" phpName="Tag" type="VARCHAR" size="50" required="true">
<vendor type="mysql">
<parameter name="Collate" value="utf8_bin"/>
</vendor>
</column>

关于mysql - MySQL 中的 Propel 和二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com