SQL Query条件选择

时间:2018-04-02 14:29:14

标签: sql-server tsql

我正在尝试编写查询,以便如果列包含破折号,则会提供一个结果,否则会产生另一个结果。

我的查询如下所示。

我收到错误:
不能在表或索引视图'#MyTEmp'上使用CONTAINS或FREETEXT谓词,因为它不是全文索引的。

我不知道这意味着什么或如何解决它......

以下是我想要开始工作的查询代码:

Select ( IIF( CONTAINS(PONO, '-'),'Dashwala',PONO)), Qty from #MyTEmp

和...

#MyTEmp就是这样的:

Select  AR_Numbers, PONO, Product, Sum( isnull(try_cast(quantity as decimal ), 0)) as Qty 
into #MyTemp
from 
(Select ARs.DocID, Ars.Field61 as AR_Numbers, PONOs.Field21 as PONO, CoreData.Field9 as Product, CoreData.Field10 as Quantity 
from ssMVFields ARs left join ssFields PONOs on ARs.DocId = PONOs.DocId left join ssField14 as CoreData on Ars.DocID = CoreData.DocID  
where ARs.ArchiveID = 12 and PONOs.ArchiveID = 12 and CoreData.ArchiveID = 12) as AAA
Group by AR_Numbers, PONO, Product

2 个答案:

答案 0 :(得分:0)

尝试使用CHARINDEX函数,CONTAINS是一个全文搜索功能

select 
    case when CHARINDEX('-', PONO) > 0 then 'Dashwala' else PONO end, 
    Qty 
from 
    #MyTEmp

答案 1 :(得分:0)

对于使用函数CONTAINS或FREETEXT,您必须在sql server上安装Full-Text组件,您的数据库必须具有Fulltext目录,并且您的表必须具有索引列。只有在此之后,您才可以使用此函数来搜索谓词。 只为你 - #MyTEmp必须被编入索引 - How to create full-text index

有关此技术的更多信息:MSDN article