【发布时间】:2020-12-24 07:59:42
【问题描述】:
我正在使用 5.5.65-MariaDB MariaDB 服务器。
我有一个表,其中包含一个名为“remoteData”的中等文本类型的列,其中存储了一个 json 字符串。 此 json 字符串中的字符串值存储为转义的 utf8 序列,例如
"patientFirstName":"\u0395\u039b\u0395\u03a5\u0398\u0395\u03a1\u0399\u039f\u03a3"
上面的值是希腊名字“ΕΛΕΥΘΕΡΙΟΣ”。
我正在尝试使用查询搜索此列
Select * from sync_details where remoteData like "%ΛΕΥΘΕΡ%"
但我得到了一个空集。
我认为这是因为值被转义但我不知道该怎么做。
编辑:查询将通过 php 运行,因此我们可以使用包含 php 函数的解决方案。
提前谢谢你。
克里斯托弗罗斯
【问题讨论】:
-
允许所有你可以使用的字符集
utf8mb4 -
在数据库连接中和作为sync_detauls表中remoteData的数据类型。
-
为表定义的字符集是什么?我要了解的是数据库是否保存以六个字符序列“\u0395”开头的 ASCII 序列,或者是否将其作为单个 utf8 字符写入数据库。您用于连接的字符集是什么?
-
@symcbean 字符集是 utf8_general_ci。它可以毫无问题地用于许多其他表。正如我提到的,这里的区别是存储的数据已经是 \u0395 的形式
-
@aRvi 我使用 utf8_general_ci,其中包含我使用的英语和希腊语的所有字符。这不是问题。