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

转载了好几个地方,很难确定最早的出处。
将源码贴出来先。
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}

你可能感兴趣的:(sql,C++,c,C#)