У меня есть форма, в которой есть выпадающий список «бренд» и «модель». Я ищу здесь автомобили, которые имеют какую-то марку и / или модель.
Теперь, если я выберу «all» из выпадающего списка «brand» и какое-то значение «model», отличное от «all», я использую
COALESCE (@ бренд, cars.brand)
и
COALESCE (@ модель, cars.model)
, он работает нормально, как при возврате всех автомобилей, если я выберу «все» как для выпадающих меню, так и для конкретных результатов, если я выберу какое-то значение.
Теперь я хочу использовать FTS с ключевым словом CONTAINS
и запросом типа
CONTAINS(cars.model , 'COALESCE(@model,cars.model)')
возвращается с ошибкой как
Синтаксическая ошибка рядом с '(' в условии полнотекстового поиска 'COALESCE (@ model, cars.model)'.
Я был бы очень признателен, если бы кто-нибудь смог направить меня к запросу / запросу, который является FTS вместе с COALESCE. Пожалуйста, помогите.
P.S
SET @SQL = '
SET @query_result = (
SELECT items.id AS "ID"
,items.title AS "Title"
,cars.brand AS "Brand"
,cars.model AS "Model"
,cars.type AS "Type"
,items.city AS "City"
,items.name AS "Name"
,items.date_added AS "Date"
,items.small_1 AS "Image"
FROM [cars]
JOIN [items]
ON items.id=cars.item_id
WHERE cars.item_id = COALESCE(@item_id,cars.item_id)
AND CONTAINS(cars.brand ,''COALESCE('+@brand+',cars.brand)'')
AND cars.model = COALESCE(@model,cars.model)
AND cars.type = COALESCE(@type,cars.type)
AND items.city = COALESCE(@city,items.city)
AND DATEDIFF(DAY,items.date_added,GETDATE())<=COALESCE(@period,items.date_added)
AND items.new = COALESCE(@isnew,items.new)
FOR XML
PATH(''car''),ROOT(''items''))'