按拼音模糊匹配查询条件的生成类

1 using System;
2 using System.Text;
3 using System.IO;
4
5 namespace ts
6 {
7classtest
8{
9privatestaticstring[]startChars={"","","","","","","","",
"","","","","","","","","","","","","","","","","",""}
;
10privatestaticstring[]endChars={"","","","","","","","",
"","","","","","","","","","","","","","","","","",""}
;
11
12/**////<summary>
13///根据字符和对应的中文字符,转成SQL查询条件
14///</summary>
15///<paramname="cChar">要转化的字符,[A-Z]</param>
16///<paramname="strFieldName">条件左值</param>
17///<returns>SQL条件</returns>
18///<remarks>Sxf2001-1-4*****JY2002-1-4</remarks>

19publicstaticstringGetCharCondition(charcChar,stringstrFieldName)
20{
21stringstrWord;
22intIndex=(int)(char.ToUpper(cChar))-(int)'A';
23if(Index>=0&&Index<26)
24strWord=startChars[Index];
25else
26strWord=startChars[0];
27
28//returnstring.Format("(({0}>='{1}'AND{0}<'[')OR({0}>='{3}'AND{0}<'{{')OR{0}>='{2}')",
29//strFieldName,char.ToUpper(cChar),strWord,char.ToLower(cChar));
30
31returnstring.Format("(({0}>='{3}'AND{0}<='zzzzzzzz')OR{0}>='{2}')",
32strFieldName,char.ToUpper(cChar),strWord,char.ToLower(cChar));
33}

34
35/**////<summary>
36///将指定字段值的每个字符分割,这样可以生成同音查询的SQL
37///</summary>
38///<paramname="fieldName">字段名</param>
39///<paramname="fieldValue">字段值</param>
40///<returns>生成的可以进行同音查询的SQL</returns>

41publicstaticstringGetCharFullCondition(stringfieldName,stringfieldValue)
42{
43StringBuildersql=newStringBuilder(1024);
44inti=1;
45foreach(charcinfieldValue)
46{
47if(i>1)
48sql.Append("AND");
49intindex=(int)(char.ToUpper(c))-(int)'A';
50stringstartWord,endWord;
51if(index>=0&&index<26)
52{
53startWord=startChars[index];
54endWord=endChars[index];
55}

56else
57{
58startWord=startChars[0];
59endWord=endChars[0];
60}

61stringsubStr=String.Format("SUBSTRING({0},{1},{2})",fieldName,i,1);
62sql.AppendFormat("({0}BETWEEN'{1}'AND'{2}')",subStr,startWord,endWord);
63++i;
64}

65
66returnsql.ToString();
67}

68}

69}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值