2013-07-09 5 views
1

У меня есть проблема с основной if условия в функции .. У меня есть что-то вроде этогоSQL Server: основной, если условие в функции

IF LEFT(@text, 1) = '#' 
     BEGIN 
      /* trim first character if is '#' */ 
      RETURN RIGHT(@text,LEN(@text)-1) 
     END 
    ELSE 
     BEGIN 
      RETURN @text 
     END 
    END 

Консольный вывод показать мне этот

Неправильный синтаксис около ключевого слова 'ЕСЛИ'. Неверный синтаксис рядом с ключевым словом «END».

Интересно, где проблема. Могу ли я упростить условие if?

IF LEFT(@text, 1) = '#' RETURN RIGHT(@text,LEN(@text)-1) 
ELSE RETURN @text 

Спасибо

редактирования: теперь у меня есть, что если в функции

CREATE FUNCTION Trimming (@text VARCHAR(255)) 
RETURNS VARCHAR(255) 
AS 
BEGIN 
    DECLARE @TrimText AS VARCHAR(255) ; 

    SET @TrimText=LTRIM(RTRIM(@text) 
    IF LEFT(@TrimText, 1) = '#' 
     BEGIN 
      RETURN RIGHT(@TrimText,LEN(@TrimText)-1) 
     END 
    ELSE 
     BEGIN 
      RETURN @TrimText 
     END 
END 

и консоли говорит

Неправильный синтаксис около ключевого слова 'если'.

+0

ничего плохого в этом кодексе. http://i.stack.imgur.com/TwBAh.png –

+0

Спасибо за изображение, один END был дополнительным :-) – Muflix

ответ

1

У вас есть дополнительный END заявление, запрос должен выглядеть следующим образом:

IF LEFT(@text, 1) = '#' 
BEGIN 
    /* trim first character if is '#' */ 
     RETURN RIGHT(@text,LEN(@text)-1) 
END 
ELSE 
BEGIN 
     RETURN @text 
END 

http://sqlfiddle.com/#!6/270ca/4

С вашего редактирования

SET @TrimText=LTRIM(RTRIM(@text) 

Вы пропускаете )

SET @TrimText=LTRIM(RTRIM(@text)) 
+0

Спасибо, это помогло .. я переписал его на этот http: // pastebin .com/mpJ9cd6E, но теперь я получаю неверный синтаксис рядом с ключевым словом «IF». – Muflix

+0

@Muflix - pastebin заблокирован в моей сети. Можете ли вы включить его в SQLFiddle или изменить свой вопрос, чтобы включить код? –

+0

да я редактировал вопрос – Muflix

1

Последнее END не нужно так как IF не требует END. Кроме того, поскольку у вас есть только одно заявление внутри IF и другое внутри ELSE, вам не нужно писать BEGIN и END.

+0

Хорошо, спасибо – Muflix

Смежные вопросы