gpt4 book ai didi

sql-server - 7645 空全文谓词

转载 作者:行者123 更新时间:2023-12-01 18:44:57 25 4
gpt4 key购买 nike

我有一个查询在 SQL2005 上运行良好,但将数据库移至 SQL2008 却出现了标题中的错误。

有问题的代码是使用空参数调用 CONTAINS、CONTAINSTABLE 或 FREETEXT。但是,我尝试仅在存在此类值时才调用或加入

where (@search_term = '' or (FREETEXT(lst.search_text, @search_term)))

left join containstable (listing_search_text, search_text,  @search_term) ftb on l.listing_id = ftb.[key] 
and len(@search_term) > 0

但是我找不到任何解决方法可以使其在 SQL2008 上运行。有什么想法吗?

我知道我可以执行动态 SQL 或使用具有两种不同情况的 if 语句(使用 FT 连接进行选择,不使用 FT 连接进行选择。有不需要这样做的更好的解决方法吗?

最佳答案

今天,我在将自己的数据库从 SQL 2005 转换为 SQL 2008 时找到了这个问题的答案。

为您的搜索词传递 "" 并将 @search_term = '' 测试更改为 @search_term = '""'SQL Server 将忽略双引号并且不会抛出错误。

例如,以下命令实际上会返回 Users 表中的所有记录:

declare  @SearchTerm nvarchar(250)

SET @SearchTerm = '""'

select UserId, U.Description, U.UserName
from dbo.Users U
WHERE ((@SearchTerm = '""') OR CONTAINS( (U.Description, U.UserName), @SearchTerm))

如果您使用 .Net,您可能会获取 E. W. Bachtal 的 FullTextSearch 类的副本。他的网站信息非常丰富:http://ewbi.blogs.com/develops/

关于sql-server - 7645 空全文谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/189765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com