不幸的是,我必須與IBM的UniData數據庫系統進行一些交互。我正在使用UniObjects for .net的c#代碼。如何使用Uniquery執行UniData案例不敏感搜索
我正在構建一個具有單個搜索框的ASP.NET搜索頁面。我遇到的問題是標準區分大小寫。我如何使用UniQuery進行不區分大小寫的搜索?
我可以返回所有內容並在我的Linq XML語句中實現不區分大小寫,但這會導致性能問題,因爲效率不高。
這裏是我寫的代碼:我發現這個
using IBMU2.UODOTNET;
using UniObjectsHelper;
using System.Xml.Linq;
...
void DoSearch()
{
XElement xml;
using (UniSession us = UniHelper.OpenSession((UniDataConfig)ConfigurationManager.GetSection("unidataConfig")))
{
UniCommand cmd = us.CreateUniCommand();
// this is probably insecure. I will deal with that later
cmd.Command = string.Format(@"LIST UT.OPERS WITH @ID = ""{0}"" OR WITH LAST.NAME = ""{0}"" OR WITH FIRST.NAME = ""{0}"" OR WITH MIDDLE.NAME = ""{0}"" LAST.NAME FIRST.NAME MIDDLE.NAME TOXML", txtSearch.Text);
cmd.Execute();
xml = XElement.Parse(cmd.Response);
}
gvwResults.DataSource = from x in xml.Descendants("UT.OPERS")
select new
{
User = x.Attribute("_ID").Value,
FirstName = x.Attribute("FIRST.NAME").Value,
LastName = x.Attribute("LAST.NAME").Value,
MiddleName = x.Attribute("MIDDLE.NAME").Value
};
gvwResults.DataBind();
}
編輯
:
UDT.OPTIONS 92
U_INSENSITIVE_MATCH
此選項AFFE cts查詢在 上的數據在字典定義中包含Pick®風格 轉換。 MCT, MCT和MCU轉換 字符的情況下,Pick®式處理代碼。這些轉換是 適用於 之前的數據比較和選擇,因此 省略匹配字符不同於 的情況。 UDT.OPTIONS 92使LIKE 轉換數據和選擇所基於的文字 ,所以 基於大小寫的情況選擇實際上不是 。
我真的不知道「Pick®式處理代碼MCL,MCT和MCU」是什麼。誰能解釋一下?
感謝您的意見。看我的編輯。你怎麼看? – 2009-10-28 21:09:48
因此,在執行比較時,查詢中沒有可以將字段轉換爲小寫的函數嗎? – 2009-10-29 22:32:03
UniQuery中有一個CNV命令,用於在查詢期間將轉換代碼應用於字段;不幸的是,它似乎並不認爲它可以應用於WITH條件。 – 2009-10-29 22:43:03