【问题标题】:MariaDB PCRE Regular Expression issueMariaDB PCRE 正则表达式问题
【发布时间】:2015-08-15 09:33:29
【问题描述】:

我想查询梵文语言中的一系列字符。如果我使用

SELECT count(`dev`) FROM `transliteration` WHERE `dev` REGEXP 'क़';

它返回的计数为 71。但我希望能够通过其 unicode 引用来查询它,所以我认为以下应该可以工作:

SELECT count(`dev`) FROM `transliteration` WHERE `dev` REGEXP '[\\x{958}]';

MariaDB 支持 PCRE,所以我应该能够做到这一点,即使到目前为止我还没有成功。我什至阅读了documentation,但无济于事。如果我有两个以上的十六进制数字,它似乎正在处理花括号中的数字,就像我想要重复一样。好吧,unicode 的字符远不止两位数!

如前所述,我想查询一个范围 ([\x{0958}-\x{095E}]),但首先要做的是。

【问题讨论】:

    标签: mysql pcre mariadb


    【解决方案1】:

    假设您在整个系统中使用 utf8 编码,...

    可能工作:

    SELECT 'क़ज़फ़' REGEXP '^[क़-फ़]+$';
    

    (它适用于我的测试环境。)

    如果没有,那么您可能需要构建 REGEXP,注意以下是在 utf8 和 unicode 之间转换的方法:

    SELECT CONVERT(UNHEX('0958') USING ucs2); --> क़
    SELECT HEX(CONVERT('क़' USING ucs2))       --> 0958
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2014-08-02
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多