我們正在轉向EF4 & Linq作爲我們的db接口到Oracle 11g數據庫。數據庫設置爲區分大小寫,但我們需要搜索爲不區分大小寫。在oracle中,在查詢中使用「UPPER」可能非常昂貴。我已經看過用指定的結果如下選項:EF4 Linq Oracle11g製作查詢不區分大小寫
ChangeEntities.TABLE.Where(x => x.FIELD.Equals(VARIABLE))
generates SQL Where clause:
WHERE TABLE.FIELD = VARIABLE
---------------------
ChangeEntities.TABLE.Where(x => x.FIELD.Equals(VARIABLE.ToUpper()))
generates SQL Where clause:
WHERE TABLE.FIELD = (UPPER(VARIABLE))
---------------------
ChangeEntities.TABLE.Where(x => x.FIELD.ToUpper().Equals(VARIABLE.ToUpper()));
generates SQL Where clause:
WHERE (UPPER(TABLE.FIELD)) = (UPPER(VARIABLE))
---------------------
ChangeEntities.TABLE.Where(x => x.FIELD.Equals(VARIABLE, StringComparison.CurrentCultureIgnoreCase))
generates SQL Where clause:
WHERE TABLE.FIELD = VARIABLE
-----------------------
結果還挺爲自己說話,除了最後一個例子實際上可能錯過記錄。
有沒有人有任何其他想法的技術?
感謝,薩默爾