Я использую MS SQL 2008 и у меня есть поле статуса, который приходит, как это:Как отфильтровать SQL-запрос в точном соответствии с строкой?
"REF CNF PCNF REL"
Мне нужно, чтобы получить все заказы со статусом CNF
без возврата PCNF
. Я мог бы сделать это, используя пробелы до и после WHERE STATUS LIKE '% CNF %'
, но если CNF - это первый или последний статус, он будет работать.
Одно решение, которое работало было:
WHERE
PATINDEX('CNF %',STATUS)=0 AND
PATINDEX('% CNF %',STATUS)=0 AND
PATINDEX('% CNF',STATUS)=0
Но это просто ужасно. Спасибо,
Вы должны нормализовать поле статуса в свою собственную таблицу, тогда эта проблема в основном уходит. Вы никогда не должны хранить отформатированные данные и/или несколько частей данных в одном поле, если вам необходимо регулярно обрабатывать «под-данные» этого поля. –