Услуги Сертификаты Новости Статьи База знаний Алгоритмы Портфолио Скачать Ссылки Поиск
Услуги arrow Новости arrow LIKE VS CHARINDEX
LIKE VS CHARINDEX Версия для печати Отправить на e-mail
10.04.2012

Как Вы считаете, оба примера кода равноценны?

Например №1:

  1. DECLARE @sortingorder NVARCHAR(MAX)
  2. IF (@sorting LIKE N'%[RegNumber]%')
  3. BEGIN
  4.  SET @sortingorder = '...'
  5. END

Например №2:

  1. DECLARE @sortingorder NVARCHAR(MAX)
  2. IF (CHARINDEX(N'[RegNumber]', @sorting) > 0)
  3. BEGIN
  4.  SET @sortingorder = '...'
  5. END

* This source code was highlighted with Source Code Highlighter.

А вот оказалось, что нет.

Пример №1 не сработает. Вернее, работает, компилируется, но не так, как Вы этого ожидаете. Ошибки компилятора не будет.

Оператор LIKE можно использовать в условии IF, но тут он бесполезен. Как показано в примере №1, условие "IF" сработает даже в том случае, если переменная @sorting не будет содержать искомое значение. Почему? Вероятнее всего, LIKE не предполагалось использовать в условных операторах типа IF. Только в конструкции самого запроса, например в секции WHERE.

Альтернативой, хотя и не очень красивой, может выступать оператор CHARINDEX (Пример №2).

PS: если Вам была полезна данная статья, поддержите наш ресурс, нажмите кнопочку "+1" вверху страницы. Спасибо!

 
< Пред.   След. >