在存储过程中使用LOCATE字符串函数

时间:2009-10-02 16:58:20

标签: sql mysql

是否有人熟悉将LOCATE与传入的字符串varialbe一起使用?我试图用它来确定在存储过程中设置的字符串中是否有逗号但是无法使其正常工作。我的代码看起来像这样

    DECLARE string VARCHAR(10);
    DECLARE comma_found INT;

    SET string = 'hello, world';

    SET comma_found = SELECT LOCATE(',',string);

    IF( comma_found <> 0 ) THEN

         ...execute code....

    END IF;

由于SELECT LOCATE,这段代码无法编译,我无法弄清楚出了什么问题。这是我的语法吗?用法?我可以使用其他任何字符串maniuplation函数来完成此操作吗?我在Mysql中的存储过程中执行此操作。

2 个答案:

答案 0 :(得分:2)

我很长时间没有使用过MySQL,所以我不完全熟悉新的语法,但是从一些谷歌搜索,我相信

SET comma_found = SELECT LOCATE(',',string);

应该是

SELECT @comma_found := LOCATE(',',string);

然后你可以使用@comma_found例如:

SELECT @comma_found

您似乎正在尝试将数据集分配给变量而不是LOCATE的结果

见这里:http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

答案 1 :(得分:0)

LOCATE的语法是LOCATE(substring,string)。您的查询字面上说LOCATE(',',string)其中string是varchar(10)。你的字符串实际上超过10个字符,但= P