拼音查询生成SQL条件的类
拼音查询生成SQL条件的类
 public class SQLPingYing
public class SQLPingYing {
    {  private static string[] startChars = {"啊", "芭", "擦","搭","蛾","发","噶","哈",
        private static string[] startChars = {"啊", "芭", "擦","搭","蛾","发","噶","哈", "击","击","喀","垃","妈","拿","哦","啪","期","然", "撒","塌","挖","挖","挖","昔","压","匝"};
                                                 "击","击","喀","垃","妈","拿","哦","啪","期","然", "撒","塌","挖","挖","挖","昔","压","匝"};  private static string[] endChars = {"澳", "怖", "错","堕","贰","咐","过","祸",
        private static string[] endChars = {"澳", "怖", "错","堕","贰","咐","过","祸", "啊","骏","阔","络","穆","诺","沤","瀑","群","弱", "所","唾","啊","啊","误","迅","孕","座"};
                                               "啊","骏","阔","络","穆","诺","沤","瀑","群","弱", "所","唾","啊","啊","误","迅","孕","座"}; 
 /// <summary>
        /// <summary>  /// 根据字符和对应的中文字符,转成SQL查询条件
        /// 根据字符和对应的中文字符,转成SQL查询条件  /// </summary>
        /// </summary>  /// <param name="cChar">要转化的字符,[A-Z]</param>
        /// <param name="cChar">要转化的字符,[A-Z]</param>  /// <param name="strFieldName">条件左值</param>
        /// <param name="strFieldName">条件左值</param>  /// <returns>SQL条件</returns>
        /// <returns>SQL条件</returns>  /// <remarks> Sxf 2001-1-4 ***** JY 2002-1-4 </remarks>
        /// <remarks> Sxf 2001-1-4 ***** JY 2002-1-4 </remarks>  public static string GetCharCondition(char cChar, string strFieldName)
        public static string GetCharCondition(char cChar, string strFieldName)  {
        {  string strWord;
            string strWord;  int Index = (int)(char.ToUpper(cChar)) - (int)'A';
            int Index = (int)(char.ToUpper(cChar)) - (int)'A';  if (Index >= 0 && Index < 26)
            if (Index >= 0 && Index < 26)  strWord = startChars[Index];
                strWord = startChars[Index];  else
            else  strWord = startChars[0];
                strWord = startChars[0];  
            //return string.Format("(({0}>='{1}' AND {0}<'[') OR ({0} >= '{3}' AND {0} < '{{') OR {0}>='{2}')",
            //return string.Format("(({0}>='{1}' AND {0}<'[') OR ({0} >= '{3}' AND {0} < '{{') OR {0}>='{2}')",   //strFieldName, char.ToUpper(cChar), strWord, char.ToLower(cChar));
            //strFieldName, char.ToUpper(cChar), strWord, char.ToLower(cChar));  
           return string.Format("(({0} >= '{3}' AND {0} <= 'zzzzzzzz') OR {0}>='{2}')",
            return string.Format("(({0} >= '{3}' AND {0} <= 'zzzzzzzz') OR {0}>='{2}')",   strFieldName, char.ToUpper(cChar), strWord, char.ToLower(cChar));
                strFieldName, char.ToUpper(cChar), strWord, char.ToLower(cChar));  }
        }  
         /// <summary>
        /// <summary>  /// 将指定字段值的每个字符分割,这样可以生成同音查询的SQL
        /// 将指定字段值的每个字符分割,这样可以生成同音查询的SQL  /// </summary>
        /// </summary>  /// <param name="fieldName">字段名</param>
        /// <param name="fieldName">字段名</param>  /// <param name="fieldValue">字段值</param>
        /// <param name="fieldValue">字段值</param>  /// <returns>生成的可以进行同音查询的SQL</returns>
        /// <returns>生成的可以进行同音查询的SQL</returns>  public static string GetCharFullCondition(string fieldName, string fieldValue)
        public static string GetCharFullCondition(string fieldName, string fieldValue)  {
        {  StringBuilder sql = new StringBuilder(1024);
            StringBuilder sql = new StringBuilder(1024);  int i = 1;
            int i = 1;  foreach (char c in fieldValue)
            foreach (char c in fieldValue)  {
            {  if (i > 1)
                if (i > 1)  sql.Append(" AND ");
                    sql.Append(" AND ");  int index = (int)(char.ToUpper(c)) - (int)'A';
                int index = (int)(char.ToUpper(c)) - (int)'A';  string startWord, endWord;
                string startWord, endWord;  if (index >= 0 && index < 26)
                if (index >= 0 && index < 26)  {
                {  startWord = startChars[index];
                    startWord = startChars[index];  endWord = endChars[index];
                    endWord = endChars[index];  }
                }  else
                else  {
                {  startWord = startChars[0];
                    startWord = startChars[0];  endWord = endChars[0];
                    endWord = endChars[0];  }
                }  string subStr = String.Format("SUBSTRING({0}, {1}, {2})", fieldName, i, 1);
                string subStr = String.Format("SUBSTRING({0}, {1}, {2})", fieldName, i, 1);  sql.AppendFormat("({0} BETWEEN '{1}' AND '{2}')", subStr, startWord, endWord);
                sql.AppendFormat("({0} BETWEEN '{1}' AND '{2}')", subStr, startWord, endWord);  ++i;
                ++i;  }
            } 
 return sql.ToString();
            return sql.ToString();  }
        }  }
    } 
 
 
 
 
                    
                     
                    
                 
                    
                 
    
 
         
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号