现在的位置: 首页 > 综合 > 正文

用like语句时的C#格式化函数

2012年09月01日 ⁄ 综合 ⁄ 共 1631字 ⁄ 字号 评论关闭
***********************************************************************************

*                  版权声明                        

*         此文章为ocean所有,版权归ocean所有,任何网站

*和 媒体转载必须包含此段声明,否则将视为侵权,作者将 

* 保留一切权力。此声明为此文章中不可或缺的一部分。 

* 作者网名:ocean                                  

* 作者email:ocean@forever.net.cn                  

* 作者网站:http://www.oceanstudio.net             

*                     http://sps.oceanstudio.net             

* 作者blog:博客园,http://www.cnblogs.com/ocean  
*                 ocean's blog,http://www.oceanstudio.net/sps/blog 

* 此文章发表时间:2005年2月22日                     

* 此文章源:http://www.cnblogs.com/ocean/archive/2005/02/22/107250.html                                      

************************************************************************************

     昨天同事测试到一个bug,发现模糊查询中有中括号的时候查询不出来。模糊查询一般都是采用like '%xxx%'的方式,第一反应是[是特殊字符,需要转义。查了查帮助果然如此。并且转义还比较特别,使用中括号括起来,也即[[],并且除了这个符号之外,还有其它的几个符号。想想以前做的程序,都没有转义过,只是将里面的单引号替换成两个单引号而已。而且这些特殊字符在查询中确实比较难碰到。看来以前写的n多程序就bug多多了。因为我从来就没有转义过。从现在要改正了。写了一个C#的函数,不过还没有测试,贴出来先。想想有些bug通常就是因为经验不足而导致的,并非你要注意避免就一定能避免的了。而测试人员如何不了解的话,也很难测试出来。因为毕竟不可能测试无穷多个字符串。

     欢迎大家访问海洋工作室(http://sps.oceanstudio.net )

/// <summary>

        
/// 对字符串进行sql格式化,并且符合like查询的格式。

        
/// </summary>

        
/// <param name="str">要转换的字符串</param>

        
/// <returns>格式化后的字符串</returns>


        public static string ToLikeSql(string sqlstr) 

        
{

            
if (sqlstr == null)  return "";

            StringBuilder str 
= new StringBuilder(sqlstr);

            str.Replace(
"'","''");

            str.Replace(
"[","[[]");

            str.Replace(
"%","[%]");

            str.Replace(
"_","[_]");

            
return str.ToString();

        }
【上篇】
【下篇】

抱歉!评论已关闭.