Использование строковой функции LOCATE в хранимой процедуре - PullRequest
0 голосов
/ 02 октября 2009

Кто-нибудь знаком с использованием 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, и я не могу понять, что не так. Это мой синтаксис? Использование? Есть ли какая-либо другая функция манипуляции строк, которую я могу использовать для этого? Я делаю это в рамках хранимой процедуры в Mysql.

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Я долгое время не пользовался MySQL, поэтому я не совсем знаком с новым синтаксисом, но, по-моему, из-за некоторого поиска в Google

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

0 голосов
/ 02 октября 2009

Хорошо, синтаксис для LOCATE - LOCATE (подстрока, строка). Ваш запрос буквально говорит LOCATE (',', string), где string - это varchar (10). Ваша строка на самом деле больше 10 символов, хотя = P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...