Приветствую, коллеги, вот вопрос. Есть некое поле (допустим поле "Name" в таблице "Printers"). Но поле не всегда корректно заполнено (т.е. вместо HP LJ 1100 например там содержится только "1100"), приходит при этом значение корректное (т.е. HP LJ 1100). Мне же нужно выбрать такие записи таблицы, где значение Name входит во входящую строку (фильтр contain или LIKE SQL, только наоборот). Таким образом нужно сделать аналог вот такой sql функции:
SELECT Name, CHARINDEX ('1100', Name) as Pos
FROM [!test].[dbo].[Printer]
where CHARINDEX ('1100', Name) > 0
средствами esq. Это реализуемо вообще?
Нравится
Приветствую
Такую функциональность можно написать с помощью комбинации фильтров contain и not start with. А именно CONTAIN and NOT_START_WITH
Артем Гура,
Приветствую, прошу прощения, не понял? Левая часть выражения (значение Name в справочнике) равна "1100", правая часть выражения (строковая переменная) равна "HP LJ 1100". И как вы это себе представляете? Если бы наоборот было - так никаких проблем. То, что вы предлагаете будет выглядеть как: (xxxx.CONTAIN, Name, "HP LJ 1100") AND (xxxxx.NOT_START_WITH, "HP LJ 1100"), если я правильно понял?
Дмитрий, тогда я не совсем понял :)
К примеру данные:
1 HP Lj 1100
2 1100Ваш запрос
SELECT Name, CHARINDEX ('1100', Name) as Pos
FROM [!test].[dbo].[Printer]
where CHARINDEX ('1100', Name) > 0выдаст одну запись: HP Lj 1100. При этом, как я понял, параметр поиска будет = "1100"
Этот запрос на SQL можно и так сделать:
Select Name
from ... [Printers]
where
Name like '%1100%'
and
Name not like '1100%'если перевести на ESQ, то
Name like '%1100%' - это CONTAIN
Name not like '1100%' - это NOT_START_WITHпри этом входящим параметром будет "1100"
Таким образом вы найдете все строки, в которые входит 1100, но не начинается с "1100"