【问题标题】:CONTAINS in Sql Function包含在 Sql 函数中
【发布时间】:2014-12-02 02:14:04
【问题描述】:

我希望在我的函数中使用CONTAINS,但CONTAINS(@Ubicacion,TP.Ubicacion) 不接受我的输入参数@Ubicacion,即varchar

怎么了??

请问您能帮帮我吗?谢谢

ALTER FUNCTION [dbo].[fn_BuscaTiempo]
(
   @Destino CHAR(3),
   @Ubicacion NVARCHAR(MAX) 
)
RETURNS TIME
BEGIN
    DECLARE @Tiempo TIME    

    SELECT @Tiempo = TP.Tiempo 
    FROM mar_TiemposArribo TP 
    WHERE TP.Destino = @Destino 
      AND CONTAINS(@Ubicacion, TP.Ubicacion)

    RETURN @Tiempo
END

【问题讨论】:

  • 你的意思是AND TP.Ubicacion LIKE '%'+ @Ubicacion + '%'不应该是Contains(TP.Ubicacion,@Ubicacion)
  • “不接受”是什么意思?您收到错误消息吗?如果是这样,它是什么?该表是否真的定义了全文目录? Where is your schema prefix on the table name? 另外,如果不止一行符合条件怎么办?你在乎你得到哪一行吗?目前您对此没有任何控制权...
  • @Ubicacion 接收输入参数,如'17000 IH-10 West,San Antonio,Texas'和表'mar_TiemposArribo TP' TP.Ubicacion 有一个位置,如'Colorado,USA','San Antonio , Texas' ...我希望找到包括 4 个示例 'San Antonio, Texas' 的所有方向

标签: sql-server contains


【解决方案1】:

我想AD.Net 的第一个猜测是正确的,而您只是以错误的顺序混淆了该函数的参数。 (即您想在TP.Ubicacion 列中搜索具有@Ubicacion 内容的行)

根据msdn,第一个参数应该是列名或列列表,第二个是你要搜索的词;适用于您的示例

CONTAINS(TP.Ubicacion, @Ubicacion)

【讨论】:

  • 另一种选择?在@Ubicacion中搜索TP.Ubicacion
  • @Monse 是的,有; CHARINDEX 返回在 varchar(max), nvarchar(max), or varbinary(max) 中找到某个字符串的索引不是从零开始,如果未找到该字符串,则返回 0,如果在第一个索引处找到,则返回 1,...
【解决方案2】:

因为 CONTAINS 函数不能按我的需要工作,我将 CONTAINS 更改为 喜欢

ALTER FUNCTION [dbo].[fn_BuscaTiempo]
(
   @Destino CHAR(3),
   @Ubicacion VARCHAR(120)    
)

RETURNS TIME

BEGIN
  DECLARE @Tiempo TIME    
  SELECT @Tiempo=TP.Tiempo FROM mar_TiemposArribo TP WHERE TP.Destino=@Destino AND @Ubicacion **LIKE '%'+ TP.Ubicacion + '%'**     *--CONTAINS(@Ubicacion,TP.Ubicacion)*     
RETURN @Tiempo
END

@Ubicacion 接收输入参数,例如 '17000 IH-10 West, San Antonio, Texas' 和表 'mar_TiemposArribo TP' TP.Ubicacion 一个地点,例如“美国科罗拉多州”、“德克萨斯州圣安东尼奥”……我希望找到 包括 4 个示例“德克萨斯州圣安东尼奥”的所有方向

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 2018-05-19
    • 2021-03-25
    • 2013-06-12
    • 2012-02-27
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多