无法在MySQL左函数中使用INT变量
MySQL Workbench 6.2使用带有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
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))代码>