【问题标题】:Is it possible to compare unicode numbers with mysql int columns?是否可以将 unicode 数字与 mysql int 列进行比较?
【发布时间】:2012-12-18 00:05:11
【问题描述】:

我有一个带有整数值的表。在我的应用程序中有一个文本字段,用户可以输入他想要的号码进行搜索。如果用户输入英文数字没有问题。但是如果他的键盘不是英文并且输入了一个存在于表 mysql 中的数字,则找不到它。 我无法更改应用程序以将用户输入转换为英文数字。 mysql中有没有办法解决这个问题(配置、表结构等)?

例如我在数据库中有这条记录:

Order_number = 112, ...

如果用户用英文搜索 112,mysql 返回上面的行。但是如果用户输入 112 例如在波斯语(112)mysql 将返回一个空集。

【问题讨论】:

  • 举个例子来提高清晰度
  • @rambocoder 添加了一个示例
  • 你必须在你的应用中“翻译”它
  • @SirRufo 我无法更改应用程序
  • MySQL 中的数字(例如 INT 值)必须按照设计使用数字 0..9 进行寻址。所有其他将被解释为字符。恕我直言,没有应用修改就没有办法

标签: php mysql internationalization


【解决方案1】:

不直接。

mysql> SELECT CAST(112 AS CHAR) = '۱۱۲' COLLATE utf8_unicode_ci;
+------------------------------------------------------+
| CAST(112 AS CHAR) = '۱۱۲' COLLATE utf8_unicode_ci    |
+------------------------------------------------------+
|                                                    1 |
+------------------------------------------------------+
1 row in set (0.00 sec)

【讨论】:

    【解决方案2】:

    最坏的情况,你可以做类似的事情

    ... where 112 = replace('۱', 1, replace('۲', 2, 'user input here'));
    

    我假设所有输入在其数字表示中都有 10 个不同的数字,只是它们使用不同的字符来表示数字。

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多