You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL条件查询报错:临时表未全文索引导致CONTAINS无法使用求助

解决临时表上CONTAINS函数报错的问题

嘿,我来帮你搞定这个问题!

错误原因解释

你遇到的报错Cannot use a CONTAINS or FREETEXT predicate on table or indexed view '#MyTEmp' because it is not full-text indexed意思很明确:CONTAINS是SQL Server的全文搜索专用函数,它要求操作的表必须提前创建好全文索引才能使用,而临时表#MyTEmp默认是没有全文索引的,所以直接调用就会触发报错。

而且其实你的需求只是检查PONO列是否包含短横线,完全没必要用需要全文索引的CONTAINS,用普通的字符串匹配函数就足够了。

替代解决方案

这里给你两种简单可行的写法,都不需要依赖全文索引,直接在临时表上就能运行:

方法1:用CHARINDEX函数

CHARINDEX会返回指定字符在字符串中的位置,如果找不到目标字符就返回0,我们可以利用这个特性来判断:

SELECT 
    IIF(CHARINDEX('-', PONO) > 0, 'Dashwala', PONO) AS PONO_Result,
    Qty 
FROM #MyTEmp

方法2:用LIKE模糊匹配

这是更直观的字符串匹配方式,%-%表示匹配任意包含短横线的字符串:

SELECT 
    CASE 
        WHEN PONO LIKE '%-%' THEN 'Dashwala'
        ELSE PONO 
    END AS PONO_Result,
    Qty 
FROM #MyTEmp

这两种方法都能完美实现你的需求:当PONO包含短横线时返回'Dashwala',否则返回PONO本身,而且完全不需要给临时表创建任何额外索引。

内容的提问来源于stack exchange,提问作者Heap of Pinto Beans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:33:31