Услуги Сертификаты Новости Статьи База знаний Алгоритмы Портфолио Скачать Ссылки Поиск
Услуги arrow База знаний arrow Microsoft SQL Server 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" вверху страницы. Спасибо!

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