You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何在JSON字段中搜索阿拉伯语字符串

解决MySQL JSON字段中阿拉伯语内容的搜索问题

方法1:用JSON_VALUE直接提取阿拉伯语值匹配

MySQL的JSON函数可以自动解析字段内的Unicode转义字符,直接提取ar键对应的内容后和输入的阿拉伯语字符串对比即可,无需手动处理转义:

-- 精确匹配
SELECT * FROM project
WHERE JSON_VALUE(name, '$.ar') = 'المشروع الأول';

-- 模糊匹配
SELECT * FROM project
WHERE JSON_VALUE(name, '$.ar') LIKE '%المشروع%';

方法2:用JSON_CONTAINS匹配完整JSON结构

如果需要匹配完整的键值对结构,直接构造包含阿拉伯语的JSON片段作为匹配条件:

SELECT * FROM project
WHERE JSON_CONTAINS(name, '{"ar": "المشروع الأول"}');

关键配置检查

  1. 确保字符集支持:
    确认project表的name字段字符集为utf8mb4(支持所有Unicode字符,包括阿拉伯语),可以通过以下SQL查看:
    SHOW FULL COLUMNS FROM project LIKE 'name';
    
    若字符集不对,执行修改语句:
    ALTER TABLE project MODIFY name JSON CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  2. 应用程序连接字符集:
    确保你的程序连接MySQL时,指定字符集为utf8mb4(比如PHP的PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"),避免字符转义错误。

注意事项

  • 不要手动对输入的阿拉伯语字符串做JSON编码后再搜索,否则会导致双重转义,反而匹配失败。
  • 程序拼接SQL时务必使用参数绑定,既避免SQL注入,也能保证字符传递的准确性。

内容的提问来源于stack exchange,提问作者Maya Hamdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:40:07