Неверный результат, возвращаемый SQL-запросом - PullRequest
0 голосов
/ 27 апреля 2018

Приведенный ниже запрос возвращает все данные вместо отображения записей, которые состоят из [3428] в столбце ApprovedByNewTExt.

select * from 
    (
        Select Rec_Num, 
            COALESCE(AppByENo6,AppByENo5,AppByENo4,AppByENo3,AppByENo2,AppByENo1)
            As 'ApprovedByNewTExt' 
        FROM MyTable
    ) 
as output
where ApprovedByNewTExt like '%[3428]%'

Потратил больше времени на выявление проблемы, но не смог ее исправить.

Любые предложения приветствуются.

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Зависит от того, что вы ищете.

Прямо сейчас вы ищете любую строку, которая содержит 3, 4, 2 или 8

Если вы хотите найти «3428», тогда отбросьте [и]

Если вы хотите найти «[3428]», вам нужно экранировать [и], см. этот ТАК вопрос

0 голосов
/ 27 апреля 2018

Предполагая, что вы используете MS SQL Server, вам нужно выйти из квадратных скобок:

select *
from 
(
  Select Rec_Num, 
  COALESCE(AppByENo6,AppByENo5,AppByENo4,AppByENo3,AppByENo2,AppByENo1) As 'ApprovedByNewText' 
  FROM MyTable
) as output
where ApprovedByNewText like '%\[3428]%' escape '\'

p.s. Просто понял, что @ JoakimDanielson уже связан с аналогичным ответом; так что, если это решит вашу проблему, пожалуйста, дайте ему «правильный ответ». Оставьте этот ответ на месте, так как он имеет исполняемый код.

0 голосов
/ 27 апреля 2018

Не используйте квадратные скобки в where ApprovedByNewTExt like '%3428%'

...