MySQL查询问题与“喜欢”和混淆

时间:2011-02-08 16:52:19

标签: sql mysql mysql-error-1064

我需要使用字符串查询来搜索与MySQL服务器交互的C#程序。我想要找到的是一个“喜欢”我的其他变量之一的名称(nameVar)

我在C#程序中有以下查询

string q = "SELECT * 
              FROM TABLE 
             WHERE name is like %?nameVar%";

只要在我的程序中执行查询,我就会收到语法错误,告诉我语法附近 '喜欢'是不正确的。一旦我删除“%”符号,它就可以正常工作。

我很困惑,在构建查询字符串时是否必须删除%符号?

5 个答案:

答案 0 :(得分:1)

您的参数正在替换?nameVar部分,包括引号。如果参数是“TEST”,则查询将显示为

string q = "SELECT * 
              FROM TABLE 
             WHERE name is like %'TEST'%";

如您所见,%符号不合适。要么将它们从C#程序包含到namevar中,要么将查询更改为

string q = "SELECT * 
              FROM TABLE 
             WHERE name is like '%' + ?nameVar + '%'";

答案 1 :(得分:0)

您需要引用查询:

string q = "SELECT * from table where name is like '%?nameVar%'";

答案 2 :(得分:0)

SQL中的字符串需要用单引号括起来:

string q = "SELECT * 
              FROM TABLE 
             WHERE name LIKE '%?nameVar%' ";

此外,使用IS时没有LIKE运算符。

答案 3 :(得分:0)

我认为你必须遗漏'是'。

MySQL Pattern Matching

答案 4 :(得分:0)

我认为正确的语法是:

SELECT * FROM table WHERE fields LIKE '%phrase%'