代码之家  ›  专栏  ›  技术社区  ›  Bilel Chaouadi

使用LINQ to Entities(EF)和Oracle 12.1忽略搜索时的重音符号

  •  2
  • Bilel Chaouadi  · 技术社区  · 7 年前

    我需要在包含重音符号的字符串字段所在的表上执行搜索,可以应用许多运算符:从列表中的开始、包含、等于… 如果我搜索 Müller 我也要找回 Mueller ( ue 是的翻译 ü 在德语中),其他有重音的字母也一样,我知道通过修改 NLS_COMP NLS_SORT

    SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC;
    SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;
    

    我也知道可以在列级别进行排序,但这仅在12.2版本之后可用, 有什么想法吗?

    谢谢你的帮助,

    比莱尔

    1 回复  |  直到 7 年前
        1
  •  1
  •   Bilel Chaouadi    7 年前

    我用过甲骨文 NLS session parameters 解决我的问题。

     if(condition == true)
       AlterSortSession(context);
    
     public void AlterSortSession(MyContext context)
     {
       var connection = (OracleConnection)context.Database.Connection;
       connection.StateChange += AlterSortSession;
     }
    
     private static void AlterSortSession(object sender, StateChangeEventArgs e)
     {
      if (e.CurrentState != ConnectionState.Open)
        return;
    
      var connection = (OracleConnection)sender;
      OracleGlobalization info = connection.GetSessionInfo();
    
      info.Sort = "XGERMAN_DIN_AI";
      info.Comparison = "LINGUISTIC";
    
      connection.SetSessionInfo(info);
    }
    

    文件可用 here 对于 OracleGlobalization

    推荐文章