如何在MySQL中查询包含亚洲语言字符的文本?

2024-01-09

我有一个使用 UTF-8 字符集的 MySQL 表,其中有一个名为 WORDS 的长文本类型列。此列中的值由用户输入,长度为几千个字符。

该表中有两种类型的行:

  1. 在某些行中,WORDS 值是由说英语的人组成的,并且仅包含普通英语写作中使用的字符。 (并非所有内容都必须是 ASCII,例如欧元符号 http://www.fileformat.info/info/unicode/char/20ac/index.htm在某些情况下可能会出现。)

  2. 其他行具有由亚洲语言(韩语、中文、日语以及可能的其他语言)使用者编写的 WORDS 值,其中包括英语单词和使用其本地语标字符(而不是例如日语罗马字)的亚洲语言单词的混合)。

如何编写一个查询来返回所有类型 2 的行而不返回类型 1 的行?或者,如果这很难,有没有办法查询most这样的行(这里如果我错过了一些类型 2 的行,或者包含一些类型 1 的误报,也没关系)?

更新:下面的评论建议我最好完全避免使用 MySQL 查询引擎,因为它对 unicode 的正则表达式支持听起来不太好。如果这是真的,我可以将数据提取到文件中(使用mysql -B -e "some SQL here" > extract.txt),然后在文件上使用 perl 或类似的命令。使用这种方法的答案是可以的(但不如本地 MySQL 的好!)


理论上你可以这样做:

  1. 找到您要测试的 unicode 范围。
  2. 手动将开头和结尾编码为 UTF-8。
  3. 使用每个编码的开始和结束的第一个字节作为 REGEXP 的范围。

我相信 CJK 的范围与欧元符号之类的东西相距足够远,因此误报和误报很少或根本没有。

Edit:我们现在已经将理论付诸实践了!

Step 1:选择字符范围。我建议\u3000-\u9fff;易于测试,并且应该会给我们带来近乎完美的结果。

Step 2:编码成字节。(维基百科 utf-8 页面) http://en.wikipedia.org/wiki/UTF-8

对于我们选择的范围,utf-8 编码值将始终为 3 个字节,第一个字节是 1110xxxx,其中 xxxx 是 unicode 值的最高有效四位。

因此,我们想要处理 11100011 到 11101001 或 0xe3 到 0xe9 范围内的字节。

Step 3:使用非常方便的(我刚刚发现的)UNHEX 函数来制作我们的正则表达式。

SELECT * FROM `mydata`
WHERE `words` REGEXP CONCAT('[',UNHEX('e3'),'-',UNHEX('e9'),']')

刚刚尝试了一下。奇迹般有效。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在MySQL中查询包含亚洲语言字符的文本? 的相关文章

  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • 在mysql中的单个查询中更新多个表

    我有三个查询 我想要一个 这是我的查询 UPDATE tab1 SET a WHERE id 3 UPDATE tab2 SET b WHERE id 9 UPDATE tab3 SET c WHERE id 5 您可以尝试下面的代码 UP
  • 从按日期时间排序的 MySQL 表中获取用户的最后一个条目

    我有一张看起来像这样的桌子 USERNAME DATA DATETIME Jhon text1 2010 06 01 16 29 43 Mike text2 2010 06 01 16 29 22 Silver text3 2010 05
  • 海量记录的bulk_create最佳实践

    I use bulk create将 1 mio 记录插入到新表中 需要 80 秒 Django 只使用一个 CPU 核心 大约 25 CPU 但没有一个核心达到 100 我相信有改进的潜力 这是代码 class Stock models
  • 在 C# 中,当有人插入、删除或修改记录时,如何从 MySQL 获取事件?

    我正在 WPF Net 中开发一个程序 我需要知道何时有人对数据库的任何表进行更改 这个想法是在数据库发生更改时从数据库接收一个事件 我读了很多文章 但找不到解决我的问题的方法 亲切的问候 最好的解决方案是使用消息队列 在您的应用程序向数据
  • 如果没有找到值,如何让 MySQL 中的 SUM 函数返回“0”?

    假设我在 MySQL 中有一个简单的函数 SELECT SUM Column 1 FROM Table WHERE Column 2 Test 如果没有条目Column 2 包含文本 Test 然后该函数返回NULL 而我希望它返回 0 我
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • 所见即所得与 Unicode

    我在 Delphi 中编写了一个 Windows 程序 该程序使用 GetCharWidth 和 Em Square 将文本非常精确地放置并换行到屏幕和打印机 这对于 ANSI 文本效果很好 您只需要检索和计算 255 个字符的宽度 但当您
  • covertJSONtoSQL 在 NiFi 中返回空值

    我正在设计一项工作 使用以下命令将数据从 MySQL 中的数据库转移到另一个数据库 MySQL 执行SQL处理器随后将Avro转换为Json then 将Json转换为SQL then PutSQL如下流程图所示 将JSON转换为SQL返回
  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • 使用包管理器时如何管理 Perl 模块?

    A 最近的问题 https stackoverflow com questions 397817 unable to find perl modules in intrepid ibex ubuntu这让我开始思考 在我尝试过的大多数 Li
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 用于表示过滤的漏斗的 Unicode 字符

    是否存在在常见计算机操作系统上广泛使用的表示过滤 例如漏斗 的 unicode 字符 到目前为止我发现的一些最相似的字符 Y V
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam

随机推荐

  • 以十进制形式返回日期差异

    我试图以更高精度以小数形式返回两个日期之间的年数 例如 如果相差 1 年 1 个月 15 天 我想 返回值 1 15 或类似的值 最终 在这个 例如 我想显示差异是 1 年 1 个月又 15 天 差值以小数形式显示 我能够返回小数值 但我不
  • 这种方法是否有更快的替代方法来从字典列表中获取最后更新消息?

    我需要从数据流中获取最后的更新消息 数据是这样的 test data u category u 3 u entity u entityA u length u 0 u timestamp u 1562422690 u category u
  • iPhone/iPad HTML5 Canvas fillText问题

    使用 iPhone 或 iPad 时 我在画布上的文本方面遇到了奇怪的问题 文本要么被正确绘制 很少 要么被颠倒绘制 要么根本不被绘制 当文本确实成功绘制时 它会在 iPhone Pad 旋转时被擦除 我有以下代码 看来 如果我使用 set
  • 如何删除 VC 2008 中的“错误 C4335:检测到 Mac 文件格式”

    我现在用VC 2008编译一个项目 得到的错误如下 Error 7 error C4335 Mac file format detected please convert the source file to either DOS or U
  • 如何在 Spring MVC 测试中检查 JSON 响应

    我在 web xml 中定义了一个 servlet 因此我将其定义在 Controller 中 仅用于测试MyResource Controller public class TestMyServlet MyResource servlet
  • 开始为 JVM 分配内存

    我开始使用 Xmx上的选项java命令允许我的进程使用更多的内存 256Mb 尽管我认为我当前使用的内存少于 128Mb 我还注意到 Xms启动内存选项 默认值为 2Mb 我应该将此值设置为多少以及为什么 参考 Java http java
  • BASE64 编码和解码不起作用

    我正在 Delphi XE5 中开发 android 应用程序 我需要 BASE64 编码和解码一些字符串 这个函数对于英文字符工作正常 但是我想要编码 或任何特殊的 iso8859 2 字符编码不起作用 知道如何修复它吗 我找到了 BAS
  • 安装了测试适配器的 NUnit 单元测试未显示在测试资源管理器中

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我已经为 VS2012 2013 安装了 NUnit 测试适配器 当我第一次安装适配器测试时 它们会显示出来 但今天由于某种原
  • 如何在 NHibernate 中克隆对象?

    NHibernate中如何实现对象 实体 克隆 每个实体类都有这样的属性 public virtual IList
  • Java (Android) 中的调试模式(正则表达式)失败

    我正在一段代码中进行模式匹配 该代码在一种情况下运行良好 但在另一种情况下则不然 目前的代码是 DLVRYrx Pattern compile d s p Letter s d s d d s d Log d TAG Regex match
  • django 模型保存 - 迁移期间未调用覆盖方法

    我的模型类中有一个保存覆盖方法 每次保存对象时都会生成一个新的 slug def save self args kwargs if self column2 self slug slugify self column1 self colum
  • before_filter 语法,当你想要“排除”控制器“abc”时

    在 Rails 中 当您想要 排除 控制器 abc 时 before filter 语法是什么 例如 在 application controller 中 如果我想说 before filter login required except
  • 如何通过代码查找黑莓中的应用程序大小?

    我想知道如何通过代码查找黑莓中的应用程序大小 我想在单击按钮时显示正在运行的应用程序名称及其大小 那么我应该怎么做 我给出了一些解释 请参阅此链接 https stackoverflow com a 9074486 914111 https
  • 手写文字识别php

    我正在考虑创建一个特定的网络系统 它涉及许多不同的 随机 人上传他们所写内容的扫描文档 有没有PHP开源方法可以将这些手写文本转换为机器文本 我找到了这个question https stackoverflow com questions
  • eax 与其他寄存器相比的不同行为

    我编写了一个小的汇编代码片段 Gas 32 位 它接受命令行参数 计算其字符并打印字符串 如果它具有一定的长度 仅用于调试目的 我对汇编比较陌生 所以我很确定我在这里错过了一些东西 因为当我将字符串存储在 eax 中时 与 ecx edx
  • 将日期时间更改为 MVC 3 C# 中的日期

    我正在使用 MVC 3 和 C 在下拉列表中显示日期时遇到问题 日期显示如下 2011年4月21日 12 00 00上午 但我只想这样格式化它们 2011年4月21日 这正是我数据库中的格式 数据库中的日期属性是日期而不是日期时间 模型中的
  • 使用底部导航 android kotlin 在片段中实现 MVVM 的最佳实践

    我正在使用 firebase 的底部导航在片段中实现 MVVM 但它不适用于我的情况 我搜索了很多解决方案 但没有解决我的问题 我在片段中实现了 viewModel 并将观察者应用于它 在 ViewModel 类中 从存储库调用返回类型为
  • LINQ:按聚合分组但仍从最新行获取信息?

    假设我有一个保存运输历史记录的表 我想编写一个查询来计算每个用户的发货量 并从该用户表中的最新条目获取发货名称 为简单起见 表结构 货件编号 会员ID 运输名称 发货日期 如何编写 LINQ C 查询来执行此操作 听起来可能想要类似的东西
  • Django/mod_wsgi/Apache - mod_wsgi 未使用为其编译的 Python 版本 - “ModuleNotFoundError:没有名为 'math' 的模块”

    我正在尝试在 Ubuntu 16 04 6 服务器上部署带有 Apache2 和 mod wsgi 的 Django 应用程序 但我正在努力让 mod wsgi 使用正确的 python 版本 我从源代码安装了 mod wsgi 并且配置它
  • 如何在MySQL中查询包含亚洲语言字符的文本?

    我有一个使用 UTF 8 字符集的 MySQL 表 其中有一个名为 WORDS 的长文本类型列 此列中的值由用户输入 长度为几千个字符 该表中有两种类型的行 在某些行中 WORDS 值是由说英语的人组成的 并且仅包含普通英语写作中使用的字符