我希望在我的函数中使用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
答案 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个例子'圣安东尼奥,德克萨斯州'