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

本文介绍了一种解决SQL模糊查询中特殊字符导致的问题的方法,通过转义特殊字符确保查询的准确性。提供了一个C#函数示例,用于将输入字符串转换为符合LIKE查询格式的SQL字符串。

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

    

/// <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(); 
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值