Сервер SQL использует функцию CONTAINS в качестве столбца в операторе выбора - PullRequest
0 голосов
/ 15 мая 2019

Я пишу оператор select, и мне бы хотелось, чтобы он включил в список столбцов вызов функции CONTAINS на сервере sql.

Я хочу, чтобы это было примерно так:

   SELECT  i.IncidentID, CONTAINS(sa.AddressStreet, 'asda') AS 'asda' FROM Incident i
            JOIN IncidentSubject isu ON isu.IncidentID = i.IncidentID
            JOIN SubjectAddress sa ON sa.SubjectID = isu.SubjectID
            WHERE i.Section <> 0 AND (i.Section & 255 <> 0)

Но я получаю сообщение об ошибке при использовании содержимого в разделах столбцов.С другими функциями, такими как LEN, работает.

Ответы [ 3 ]

1 голос
/ 15 мая 2019

CONTAINS - это предикат, используемый в предложении WHERE оператора SELECT Transact-SQL для выполнения полнотекстового поиска SQL Server по полнотекстовым индексированным столбцам, содержащим символьные типы данных. Это означает, что не может быть использован в SELECT. Однако, как я правильно понимаю, вы можете использовать CharIndex

SELECT i.IncidentID, 
       CHARINDEX('asda', sa.AddressStreet)  'asda'
FROM Incident i
     JOIN IncidentSubject isu ON isu.IncidentID = i.IncidentID
     JOIN SubjectAddress sa ON sa.SubjectID = isu.SubjectID
WHERE i.Section <> 0
      AND (i.Section&255 <> 0);

Подробнее о СОДЕРЖИТ (Transact-SQL) и CHARINDEX (Transact-SQL)

0 голосов
/ 15 мая 2019

Вы ищете это?

SELECT
       i.IncidentID, 
       sa.AddressStreet [asda]
FROM Incident i
     JOIN IncidentSubject isu ON isu.IncidentID = i.IncidentID
     JOIN SubjectAddress sa ON sa.SubjectID = isu.SubjectID
WHERE i.Section <> 0
      AND (i.Section&255 <> 0)
      AND CONTAINS(sa.AddressStreet, 'asda');
0 голосов
/ 15 мая 2019

Как уже указывал JohnHC, CONTAINS - это предикат, который можно использовать только в предложениях WHERE.

Вы можете попробовать это вместо

 SELECT  
   i.IncidentID, 
   CASE WHEN CHARINDEX('asda', sa.AddressStreet) > 0 THEN 'true' else 'false' end AS 'asda' 
FROM Incident i
JOIN IncidentSubject isu ON isu.IncidentID = i.IncidentID
JOIN SubjectAddress sa ON sa.SubjectID = isu.SubjectID
WHERE i.Section <> 0 AND (i.Section & 255 <> 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...