MySQL中的Propel和二进制字符串

时间:2012-03-04 14:34:36

标签: mysql propel

我想区分字符cčeé

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

Propel VARBINARY仅映射到 MySQL BLOB(与 Propel {{1}相同}和 Propel的 BLOBVARBINARY似乎很复杂(它们返回资源ID)。

所以我尝试了 Propel BLOB,它映射到 MySQL CLOB。这在使用中效果很好,但是LONGTEXTe再次相同。所以它与我目前的é没有区别。

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

1 个答案:

答案 0 :(得分:1)

关于整理的一般信息

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

二进制排序规则会以不同方式处理每个字符,因此eé等字符不相同。

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

排序不仅指定哪些字符相同,而且还指定在排序列后排序的顺序。

在这种情况下,您的选择将是utf8_bin

在Propel中使用归类

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

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