在Sql函数中包含

时间:2014-10-07 15:26:07

标签: sql-server contains

我希望在我的函数中使用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

2 个答案:

答案 0 :(得分:1)

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

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

CONTAINS(TP.Ubicacion, @Ubicacion)

答案 1 :(得分:0)

  

原因CONTAINS函数无法正常工作,我将CONTAINS更改为   LIKE

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   德克萨斯州安东尼奥和'mar_TiemposArribo TP'TP.Ubicacion表   一个地方,如'科罗拉多州,美国','圣安东尼奥,德克萨斯'......我希望找到   所有方向包括4个例子'圣安东尼奥,德克萨斯州'