无法在MySQL左函数中使用INT变量

无法在MySQL左函数中使用INT变量,mysql,substring,mysql-workbench,Mysql,Substring,Mysql Workbench,MySQL Workbench 6.2使用带有INT变量的LEFTstring函数在存储例程中报告语法错误,这让我感到困惑: declare lclPos int; declare lclPart varchar(100); ... set lclPart = LEFT(lclTemp, lclPos - 1); 错误为 语法错误:“lclPos”(标识符)作为此点不是有效的输入 但是,如果我将代码更改为等效代码 set lclPart = SUBSTRING(lclTemp, 1, l

MySQL Workbench 6.2使用带有INT变量的
LEFT
string函数在存储例程中报告语法错误,这让我感到困惑:

declare lclPos int; 
declare lclPart varchar(100);  
...
set lclPart = LEFT(lclTemp, lclPos - 1);
错误为

语法错误:“lclPos”(标识符)作为此点不是有效的输入

但是,如果我将代码更改为等效代码

set lclPart = SUBSTRING(lclTemp, 1, lclPos - 1);
未报告任何错误。使用
LEFT
时,常量整数(但没有局部变量)起作用

这些使用
LEFT
函数的例程是很久以前编写的,我没有遇到过此代码的任何问题。奇怪的是,尽管报告了语法错误,但现有的例程仍然在服务器上工作。这让我认为这可能是由于MySQL Workbench 6.2中的一个bug造成的。服务器运行MySQL 5.5

有人知道这里发生了什么吗

set lclPart =  (select LEFT(lclTemp, lclPos - 1));

你不会有错误

好的观点。您需要在
select
语句周围加上括号。然而,尽管有此更改,问题仍然存在:语法错误是相同的<代码>子字符串虽然有效:
设置lclPart=(选择子字符串(lclTemp,1,lclPos-1))