小编Poo*_*oli的帖子

期望从SQL中的XML.value()返回null,但得到0

我试图从传递给存储过程的xml参数中读取特定值。到目前为止,我的代码的一个大致示例如下。

SET @SearchFilter = 
'<?xml version="1.0"?>
 <KeywordSearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SelfEmployed xsi:nil="true" />
 </KeywordSearch>'

SET @SelfEmployed  = @SearchFilter.query('/KeywordSearch/SelfEmployed[1]').value('/', 'bit')

SELECT @SelfEmployed
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,尽管当元素包含true或false值时上述内容正确返回,而元素不包含任何值,因此我期望为null,但它返回false。有没有办法正确获取数据类型为可为空的位值?

xml sql sql-server

3
推荐指数
1
解决办法
3072
查看次数

解析减去停用词的搜索字符串

我的任务是在一个新应用程序上创建一个“google-esque”搜索机制,但我在存储过程中遇到了一些障碍,该存储过程旨在在 SQL Server 数据库中运行实际搜索。

本质上,该过程是在从用户输入中获取的字符串中传递的,然后使用以下替换将其解析为 contains 语句。

SELECT @SearchString = '"'+ REPLACE(REPLACE(@SearchKeyword,'"',''), ' ', '" AND "') +'"'
Run Code Online (Sandbox Code Playgroud)

除非 @SearchKeyword 变量包含停止词,否则这种方法效果很好,此时,将其作为链式 AND 语句的一部分包含在内会导致找不到结果的错误。

(例如,使用“Something Somewhere”搜索用户会返回正确的结果集,但 Something of Somewhere 由于未包含在全文索引目录中而不会返回任何内容)。

我知道我可以采取从轨道上删除所有条目的方法,从停止列表中删除所有条目,但理想情况下,我想简单地修改原始替换,以不链接到停止列表中包含的 and 语句单词。

不幸的是,这让我知识匮乏,我无法找到从哪里提取这些信息以便将其用于替换目的。

我是否走在正确的轨道上,或者删除停止列表(虽然很混乱)是最好的解决方案?

sql-server full-text-search

2
推荐指数
1
解决办法
2314
查看次数

标签 统计

sql-server ×2

full-text-search ×1

sql ×1

xml ×1