2016-01-14 5 views
0

Я хочу проверить, предоставлен ли пользователю допустимый путь. Когда путь не заканчивается '/' или '\' Я хочу, чтобы он был добавлен этим скриптом.Проверка последнего символа строки не работает

if ((RIGHT(@FilePath, 1) <> '\') or (RIGHT(@FilePath, 1) <> '/')) 
     set @[email protected]+'\' 

Почему он не работает, если не при удалении or (RIGHT(@FilePath, 1) <> '/') от этого заявления? Я имею в виду, это добавляет '\' каждый раз, как он игнорировал выражение, но когда это просто:

if ((RIGHT(@FilePath, 1) <> '\')

он работает нормально.

+0

Пожалуйста, ваш вопрос ясно. Похоже, у вас проблемы, и вы говорите, что все работает нормально. ?? – MarkP

+1

Условие «ИСТИНА ИЛИ ЛОЖЬ» всегда «ИСТИНА» (логическая логика). Ваш последний символ всегда будет отличаться от/или от \. Вам нужно использовать 'AND' вместо' OR'. –

+0

@TT. Использование AND вместо OR не будет работать. И будет означать, что оба условия должны быть выполнены. Вы можете легко достичь этого с помощью IN. См. Мое решение. –

ответ

1

Если у вас есть 'somepath\', тогда условие (RIGHT(@FilePath, 1) <> '/') истинно.

Если у вас есть 'somepath/', тогда условие (RIGHT(@FilePath, 1) <> '\') истинно.

, вследствие чего вы не получите правильных результатов.

Попробуйте это:

if (RIGHT(@FilePath, 1) NOT IN ('\','/')) 
     set @[email protected]+'\' 
+0

@Dodzik Проблема в том, что одно из условий OR всегда возвращается true, поэтому оно не работает. –