帮助LIKE的SQL语法

时间:2011-04-02 13:55:52

标签: c# asp.net mysql sql html

我正在尝试选择UserID,FirstName,SecondName,PicturePath(来自Pictures表)LIKE FirstName(string search = textbox.text)

OdbcCommand("SELECT UserID, FirstName, SecondName, p.PicturePath FROM User LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE FirstName LIKE '%" + search + "%' ORDER BY UserID DESC", cn))

我的语法搞砸了。

我的表结构:

enter image description here

4 个答案:

答案 0 :(得分:1)

OdbcCommand("SELECT UserID, FirstName, SecondName, p.PicturePath FROM User LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE FirstName LIKE '%" + search + "%' ORDER BY UserID DESC", cn))

答案 1 :(得分:1)

如果您要使用相关名称,通常应该始终使用它们。它可以帮助程序员,即使数据库不需要它。

SELECT u.UserID, u.FirstName, u.SecondName, p.PicturePath 
FROM User u
LEFT JOIN Pictures p ON (p.UserID = u.UserID) 
WHERE u.FirstName LIKE '%" + search + "%' ORDER BY u.UserID DESC

重新格式化单行,引用它并将其插入。它可能会克服语法问题。不知道它是否会给你你想要的结果。

当你无法使用这样的东西时,从最简单的开始,然后从中构建。我自己也会遵循这个顺序。 (如果你把枪放在我头上,让我连接SQL。)

"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u;"
--
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE '%Cat%';"
--
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE " + "'%Cat%';"
--
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE '%" + "Cat" + "%';"
--
SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE '%" + search + "%';"
--

等等。

答案 2 :(得分:0)

使用%(作为dos *),或_(作为dos?)

快速查看,但您可能需要撤消左连接。

//编辑: 当然,您的搜索字符串需要引用 //结束编辑

问候。 /吨

答案 3 :(得分:0)

首先,您应该使用参数,这样您就不必担心SQL注入。所以我会做这样的事情:

        using (System.Data.Odbc.OdbcConnection connect = new System.Data.Odbc.OdbcConnection("Connection String"))
        {
            using (System.Data.Odbc.OdbcCommand command = connect.CreateCommand())
            {
                string sql = "SELECT u.UserID, u.FirstName, u.SecondName, p.PicturePath FROM User u " +
                    "LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE u.FirstName LIKE '%' + @search + '%' " +
                    "ORDER BY u.UserID DESC";
                command.CommandText = sql;
                command.CommandType = System.Data.CommandType.Text;
                command.Parameters.AddWithValue("@search", searchValue);

                using (System.Data.Odbc.OdbcDataReader dr = command.ExecuteReader())
                {
                    //Do what you need here
                }
            }
        }

希望这有帮助!