gpt4 book ai didi

mysql - MySQL 中的 REGEX 查找日语匹配项

转载 作者:行者123 更新时间:2023-11-29 00:53:54 36 4
gpt4 key购买 nike

我需要在一个表中找到仅包含某些日文 UTF-8 字符的所有条目。

例如,我想要所有仅由 1 (一) 和 2 (二) 组成的字段。

我正在使用

SELECT combi_id, keb FROM combi WHERE keb REGEXP '[二一]+'

但是它匹配了许多包含不同字符的其他字段,我做错了什么?

这是表格:

CREATE TABLE IF NOT EXISTS `combi` (
`combi_id` int(11) NOT NULL auto_increment,
`ent_seq` int(11) NOT NULL,
`reb` text NOT NULL,
`keb` text NOT NULL,
`ant` text NOT NULL,
`ke_pri` text NOT NULL,
`re_pri` text NOT NULL,
`re_restr` text NOT NULL,
`stagr` text NOT NULL,
`s_inf` text NOT NULL,
`lsource` text NOT NULL,
`gloss` text NOT NULL,
`xref` text NOT NULL,
`stagk` text NOT NULL,
PRIMARY KEY (`combi_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=146740 ;

这是一个示例数据行:

(22, 1000225, 'あからさま', '明白|偸閑|白地', '', '', '', '', '', '', '', 'plain|frank|candid|open|direct|straightforward|unabashed|blatant|flagrant', '', ''),

非常感谢您的帮助!

最佳答案

如果你想匹配那些只有那些字符的列,你应该使用

SELECT combi_id, keb FROM combi WHERE keb REGEXP '^[二一]+$'

注意开头的^和结尾的$,分别表示“字符串开始”和“字符串结束”。没有这些,正则表达式可以匹配任何位置。

编辑:测试它

mysql> select * from test;
+--------+
| f1 |
+--------+
| 二 |
| 東京 |
| 人 |
| 丸 |
+--------+
4 rows in set (0.00 sec)

mysql> select * from test where f1 regexp _utf8'[一二]';
+--------+
| f1 |
+--------+
| 二 |
| 東京 |
| 人 |
| 丸 |
+--------+
4 rows in set (0.00 sec)

哇,确实,mysql 正则表达式中的字符类听起来严重损坏...但这有效:

mysql> select * from test where f1 regexp _utf8'(一|二)';
+------+
| f1 |
+------+
| 二 |
+------+
1 row in set (0.00 sec)

关于mysql - MySQL 中的 REGEX 查找日语匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065994/

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