转载了好几个地方,很难确定最早的出处。
将源码贴出来先。
将源码贴出来先。
1
usingSystem;
2
usingSystem.Text;
3
usingSystem.IO;
4
5
namespacets
6

{
7
classtest
8

{
9
privatestaticstring[]startChars=
{"啊","芭","擦","搭","蛾","发","噶","哈",
"击","击","喀","垃","妈","拿","哦","啪","期","然","撒","塌","挖","挖","挖","昔","压","匝"};
10
privatestaticstring[]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>
19
publicstaticstringGetCharCondition(charcChar,stringstrFieldName)
20

{
21
stringstrWord;
22
intIndex=(int)(char.ToUpper(cChar))-(int)'A';
23
if(Index>=0&&Index<26)
24
strWord=startChars[Index];
25
else
26
strWord=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
31
returnstring.Format("(({0}>='{3}'AND{0}<='zzzzzzzz')OR{0}>='{2}')",
32
strFieldName,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>
41
publicstaticstringGetCharFullCondition(stringfieldName,stringfieldValue)
42

{
43
StringBuildersql=newStringBuilder(1024);
44
inti=1;
45
foreach(charcinfieldValue)
46

{
47
if(i>1)
48
sql.Append("AND");
49
intindex=(int)(char.ToUpper(c))-(int)'A';
50
stringstartWord,endWord;
51
if(index>=0&&index<26)
52

{
53
startWord=startChars[index];
54
endWord=endChars[index];
55
}
56
else
57

{
58
startWord=startChars[0];
59
endWord=endChars[0];
60
}
61
stringsubStr=String.Format("SUBSTRING({0},{1},{2})",fieldName,i,1);
62
sql.AppendFormat("({0}BETWEEN'{1}'AND'{2}')",subStr,startWord,endWord);
63
++i;
64
}
65
66
returnsql.ToString();
67
}
68
}
69
}

2

3

4

5

6



7

8



9



"击","击","喀","垃","妈","拿","哦","啪","期","然","撒","塌","挖","挖","挖","昔","压","匝"};
10



"啊","骏","阔","络","穆","诺","沤","瀑","群","弱","所","唾","啊","啊","误","迅","孕","座"};
11

12


13

14

15

16

17

18

19

20



21

22

23

24

25

26

27

28

29

30

31

32

33

34

35


36

37

38

39

40

41

42



43

44

45

46



47

48

49

50

51

52



53

54

55

56

57



58

59

60

61

62

63

64

65

66

67

68

69
