在MySQL LEFT函数中不能使用INT变量

时间:2014-10-02 10:36:10

标签: mysql substring mysql-workbench

我一直对MySQL Workbench 6.2使用带有INT变量的LEFT字符串函数报告存储例程中的语法错误感到困惑:

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中的一个错误。服务器运行MySQL 5.5。

有没有人知道这里发生了什么?

1 个答案:

答案 0 :(得分:1)

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

你没有错误