WITH -- AS 组别名谓词

列组别名提供了一种使用较短名称代替列或列组名称的方法。 可选的组别名谓词是 WHERE 子句的一部分。 其语法如下:

...WHERE[ WITH(<columns>) AS #<alias_name>]
[,WITH(<columns>) AS #<alias_name>]

可以指定多个组别名,分隔 WITH...按逗号表示的 AS 谓词。

在 WHERE 子句谓词中引用组别名时,条件将应用于组中的每个列。 通过使用逻辑 OR 运算符将匹配每个列所产生的逻辑值组合在一起。

必须先定义别名,然后才能使用它,并且只能在 WHERE 子句中使用。 别名必须是一个常规标识符,前面必须是所需的井号 (#) 。

列说明符可以包含一个或多个列说明符,用逗号分隔。 列列表必须括在括号中,并且可以为每个列分配权重。 每列都有以下语法:

<column_identifier> [<weight_assignment>]

有关指定列权重的信息,请参阅 FREETEXT 谓词CONTAINS 谓词

列标识符可以是常规的,也可以是分隔的。

示例

以下 WHERE 子句示例演示了何时以及如何使用组别名谓词。 第一个示例演示了一个更重复的 WHERE 子句,该子句不使用组别名。

...WHERE
    FREETEXT("System.ItemNameDisplay",'"computer software"')
    OR
    FREETEXT("System.Title",'"computer software"')
    OR 
    FREETEXT("System.Keywords",'"computer software"')

可以使用组别名简化前面的示例,如以下示例所示。

...WHERE
    WITH("System.ItemNameDisplay","System.Title","System.Keywords")
    AS #Doc-Descriptions
    FREETEXT(#Doc-Descriptions,'"computer software"')

下面是一个正权重示例,其中 Title 属性在确定相对排名时被赋予更多权重。

...WHERE
    WITH("System.Title":0.8,*:0.5,
         "System.Keywords")
    AS #Doc-Descriptions
    FREETEXT(#Doc-Descriptions,'"computer software"')

下面是一个负权重示例,其中不考虑权重为 0 的 Title 属性。

...WHERE
    WITH("System.Title":0,*:1.0,
         "System.Keywords")
    AS #Doc-Descriptions
    FREETEXT(#Doc-Descriptions,'"computer software"')

参考

FREETEXT 谓词

概念性

全文谓词

非全文谓词