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

COLLATE Vietnamese_CI_AI搭配LIKE模糊查询异常问题求助

解决越南语重音字符LIKE匹配问题

针对你遇到的%goc%无法匹配Ngọc Mai的问题,可尝试以下几种解决方案:

方案1:使用去重音函数统一处理

不同数据库有对应的去重音工具,将字段值和搜索关键词都转换为无重音形式后再匹配:

  • SQL Server:可自定义去重音函数(或用内置TRANSLATE配合字符映射):
    -- 自定义去重音函数示例
    CREATE FUNCTION dbo.fn_StripAccents(@input NVARCHAR(MAX))
    RETURNS NVARCHAR(MAX)
    AS
    BEGIN
        RETURN TRANSLATE(@input, N'áàảãạăắằẳẵặâấầẩẫậéèẻẽẹêếềểễệíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵđ', N'aaaaaaaaaaaaaaaaaeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyyyd');
    END
    GO
    
    -- 查询语句
    SELECT * FROM profile 
    WHERE dbo.fn_StripAccents(fullname) LIKE '%goc%'
    
  • PostgreSQL:直接使用内置UNACCENT函数:
    SELECT * FROM profile 
    WHERE UNACCENT(fullname) LIKE '%goc%'
    

方案2:统一排序规则应用范围

尝试将搜索关键词也指定为越南语排序规则,确保字段和搜索词使用相同的排序规则处理:

SELECT * FROM profile 
WHERE fullname COLLATE Vietnamese_CI_AI LIKE '%goc%' COLLATE Vietnamese_CI_AI

若仍无效,可确认数据库列的默认排序规则是否与查询中指定的一致,或尝试切换至Vietnamese_CI_AS后配合去重音操作。

方案3:用正则匹配重音变体

如果数据库支持正则表达式(如MySQL的REGEXP、PostgreSQL的~),可直接匹配包含重音o的所有变体:

-- PostgreSQL示例
SELECT * FROM profile 
WHERE fullname ~* 'g[oọỏõóòôốồổỗơớờởỡợ]c'

内容的提问来源于stack exchange,提问作者Kannagi Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:41:06