MySQL 字符串仅包含某些 unicode 字符

标签 mysql regex unicode

我需要在数据库中查询仅包含一组特定 Unicode 日语字符而不包含其他内容的条目。

我尝试过使用 WHERE word RLIKE '^([あいうえお])+$' 但这不适用于日语,因为 MySQL 的正则表达式缺乏 Unicode 支持。

还有其他方法可以实现这一点吗?

最佳答案

MySQL 将每个字符视为字节序列,因此 是 0xE3、0x81、0x82,而您的 [あいうえお] 实际上正在寻找任何字节序列 0xE3 、0x81、0x82、0x84、0x86、0x88 和 0x8A。这将很好地匹配 ,但它也会匹配与列表中的单个字符不对应的其他序列,例如 0xE3、0x82、0x81,即 .

当正则表达式引擎将每个字符视为多个符号时,[あいうえお] 的另一种表达方式仍然有效,即 (あ|い|う|え|お).

SELECT 'あ' RLIKE '^([あいうえお])+$';    -- 1
SELECT 'め' RLIKE '^([あいうえお])+$';    -- 1
SELECT 'あ' RLIKE '^(あ|い|う|え|お)+$';  -- 1
SELECT 'め' RLIKE '^(あ|い|う|え|お)+$';  -- 0

关于MySQL 字符串仅包含某些 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572895/

相关文章:

具有不同的php mysql日期提取

mysql - 我们如何对 SQL 二进制数据类型执行操作?

java - 构建正则表达式来解释用户对系统固定格式的命令

Python zlib 输出,如何恢复出 mysql utf-8 表?

php - 德语字符 ü ö ä Ä Ü Ö ß 未正确保存在数据库中

mysql - 如何在 VB.NET 中使用 ComboBox 从数据库中检索图像

java - 用于更新对象的 Spring REST API 方法不会检索现有的子对象

python - 杀死一个正在用正则表达式监听的端口

c# - 使用正则表达式忽略空字符串和空格

python - 有没有办法以编程方式将韩文 unicode 合并为一个?