Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
靠近'的MySQL SQL语法错误;0';在1号线_Mysql_String_Stored Procedures_Where Clause_Concat - Fatal编程技术网

靠近'的MySQL SQL语法错误;0';在1号线

靠近'的MySQL SQL语法错误;0';在1号线,mysql,string,stored-procedures,where-clause,concat,Mysql,String,Stored Procedures,Where Clause,Concat,我尝试了各种修改,使这项工作,但我似乎无法消除错误。我的SQLQuery字符串比下面的字符串大很多,但设置相同。我尝试使用CONCAT(“”)语句,但出现了问题。所以我尝试使用这种格式,但仍然收到相同的错误。有什么建议吗 CREATE DEFINER=`root`@`%` PROCEDURE `stp_Select_GetTbl`(IN strWhereClause VARCHAR(255)) BEGIN DECLARE SQLQuery varchar(1000); SET SQLQue

我尝试了各种修改,使这项工作,但我似乎无法消除错误。我的SQLQuery字符串比下面的字符串大很多,但设置相同。我尝试使用
CONCAT(“”)
语句,但出现了问题。所以我尝试使用这种格式,但仍然收到相同的错误。有什么建议吗

CREATE DEFINER=`root`@`%` PROCEDURE `stp_Select_GetTbl`(IN strWhereClause 
VARCHAR(255))
BEGIN
DECLARE SQLQuery varchar(1000); 

SET SQLQuery = '
SELECT `Part Num` AS `PPNumber`,
`Shop Num` as `SOrder`
FROM `track`.`s list` WHERE ';

SET @SQLQuery = @SQLQuery + strWhereClause + '';

PREPARE stmt FROM @SQLQuery;
EXECUTE stmt;
END
错误:

`Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1
` 我已尝试不声明SQLQuery。。。正在更改varchar大小。。。重新组织,甚至使用下面的示例

SET @getList =
CONCAT('SELECT (t1, t2, t3) FROM (SELECT t1, t2, t3) as mainSelect WHERE ', strWhereClause, '');

PREPARE stmt FROM @getList;
EXECUTE stmt;
END
但是在
。。。。在“0”附近使用正确语法的MySQL服务器版本


我需要为SELECT语句定义一个字符串,因为我在存储过程中创建了WHERE子句。

1st-不要在与表或列名关联的名称中使用空格,因为这样会导致各种问题。第二,您能显示它试图执行的完整SQL吗?(即,'strWhereClause'值是多少)之所以有空格,是因为最初的开发人员有原始名称的空格等。我也不能显示完整的SQL语句,因为它是机密的。然而,这些较小的版本应该仍然可以工作,但它们不能。我将修改我的示例以删除
AS
部分的空格。然而,对于一个较小的版本,这应该足够了,但我仍然有问题。WHERE子句示例类似于
SOrder='11222'
@NigelRen“之所以有空格,是因为最初的开发人员在原始名称中有空格”这是创建视图而不是访问表的众多原因之一。原始代码是一个视图,但我将其移动到一个没有视图的存储过程,然后我们将转换为SQL server。所以现在我必须尝试使用这个设置。我以前使用过CONCAT字符串,它工作正常,所以我不确定这为什么会导致我出现@chriscaviness问题。您还应该测试strwhere子句是否为空或null,否则您的准备将失败。