C#使用LIKE查看X是否包含Y.

时间:2009-02-12 23:35:46

标签: sql sql-server tsql sql-like

我继承了下面的代码,但我很困惑,因为代码工作正常,但我不相信它是正确的。我之前没有用过LIKE所以我无法决定是否应该为改变它而烦恼。这看起来怎么样?

代码用于db中的过滤器,它检查X值是否包含Y值,在X中找到X *(例如,在Fun和Fan中匹配将是F *),并且X不包含Y.

感谢您的意见。

foreach (ListViewItem item in listView1.Items)
                {
                    strStuff += item.Text;
                    object o = item.SubItems[1].Tag;
                    switch ((int)item.SubItems[1].Tag)
                    {
                        case 0:
                            strStuff += " LIKE '%" + item.SubItems[2].Text + "%'"; //contains
                            break;
                        case 1:
                            strStuff += " LIKE '" + item.SubItems[2].Text + "'"; //allows * wildcard
                            break;
                        case 2:
                            _strCriteria += " NOT LIKE '%" + item.SubItems[2].Text + "%'"; //doesn't contain
                            break;

                        default:
                            strStuff += "\"" + item.SubItems[2].Text + "\"";
                            break;
                    }
                    strStuff += " And ";
                }

3 个答案:

答案 0 :(得分:1)

虽然看起来它应该可以用于预期目的,但你应该真正逃避附加到可能是SQL字符串的文本。

答案 1 :(得分:1)

转义文本字符串以避免SQL注入,但否则你很好。 SQL中的LIKE执行字符串模式匹配并接受各种通配符,如“%”和“_”。

可以找到详细信息herehere

答案 2 :(得分:0)

它看起来对我来说,你必须提供更多的背景来说明它是否真的正确。 如前所述,您必须寻找可能的SQL注入攻击(是Web应用程序)

要了解Sql LIKE关键字的功能,只需直接尝试对数据库进行一些查询。