我需要在一个包含重音符号的字符串字段的表上执行搜索,可以应用许多运算符:开始于、包含、等于、在列表中...
如果我搜索 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 版本开始可用, 有什么想法吗?
感谢您的帮助,
比勒尔
最佳答案
我用过oracle 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
关于oracle - 使用 linq toEntity (EF) 和 Oracle 12.1 忽略搜索重音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648005/