【问题标题】:How to pass parameter to FormsOf function in sql server如何将参数传递给sql server中的FormsOf函数
【发布时间】:2009-09-01 12:29:03
【问题描述】:

我的问题与此类似: 我在使用 FormsOf(INFLECTIONAL: 此查询不返回任何内容。

DECLARE @SearchWord nvarchar(4000)
SET @SearchWord = 'tax'
SELECT listing_id, RANK, name, address, city, zip, heading, phone 
FROM listings a, 
FREETEXTTABLE(listings, *, 'FormsOf(INFLECTIONAL, @SearchWord')
WHERE [KEY] = a.listing_id
ORDER BY RANK DESC, name

但这个工作正常

DECLARE @SearchWord nvarchar(4000)
SET @SearchWord = 'tax'
SELECT listing_id, RANK, name, address, city, zip, heading, phone 
FROM listings a, 
FREETEXTTABLE(listings, *, 'FormsOf(INFLECTIONAL, tax')
WHERE [KEY] = a.listing_id
ORDER BY RANK DESC, name

我发现了这个问题here

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您正在搜索“@SearchWord”而不是“税”!

    试试这个查询:

    DECLARE @SearchWord nvarchar(max)
    SET @SearchWord = 'tax'
    
    DECLARE @SearchString nvarchar(max)
    SET @SearchString = 'FormsOf(INFLECTIONAL, "' + @SearchWord + '")'
    
    SELECT listing_id, RANK, name, address, city, zip, heading, phone 
    FROM listings a, 
    FREETEXTTABLE(listings, *, @SearchString)
    WHERE [KEY] = a.listing_id
    ORDER BY RANK DESC, name
    

    【讨论】:

    • 知道这对 SQL 注入攻击有多敏感/免疫吗?根据stackoverflow.com/questions/2176440/…
    • @Andrew M:这段代码是否对注入开放取决于@SearchWord 的来源。我认为这取决于程序员了解 SQL 注入;在每个关于 SQL 的问题中讨论它是没有意义的
    • 抱歉,这并不是批评,而是要努力理解动态生成参数@SearchString 的性质,以及这是否为更简单的参数化查询提供相同的保护。我对似乎从字符串中调用的 FormsOf 函数的语法也很陌生。
    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多