不幸的是,我必须与 IBM 的 UniData 数据库系统进行一些交互。我正在使用 UniObjects for .net 的 c# 代码执行此操作。
我正在构建一个具有单个搜索框的 ASP.NET 搜索页面。我遇到的问题是标准区分大小写。如何使用 UniQuery 进行不区分大小写的搜索?
我可以在我的 Linq to 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.选项 92
U_INSENSITIVE_MATCH
此选项会影响在字典定义中包含 Pick® 样式转换的数据上运行的查询。Pick® 风格的处理代码 MCL、MCT 和 MCU 转换字符的大小写。这些转换在比较和选择之前应用于数据,从而省略了不同大小写的匹配字符。UDT.OPTIONS 92 使 LIKE 转换数据和选择所基于的文字,因此选择实际上不基于大小写。
我真的不知道“Pick® 风格的处理代码 MCL、MCT 和 MCU”是什么。谁能解释一下?