查询返回SQL错误信息537

作为ETL过程的验证的一部分,我正在试图复制其SES功能脱衣网址域名和独立部分现有查询

我的查询如下:

SELECT substring(Referrer , 1, patindex('%?%', Referrer) - 1) as URL FROM dbo.tableA MRD JOIN dbo.tableB mm ON mm.MetId = MRD.MetId AND mm.MetId = 4

查询结果集返回和错误。

Msg 537, Level 16, State 2, Line 1 Invalid length parameter passed to the LEFT or SUBSTRING function.

还在学习SQL,但谷歌搜索状态'此错误是由传递一个负值到SUBSTRING,左,右字符串函数的长度参数引起的“

难道是因为我已经得到了空URL字段,如果是这样,我怎么能修改上面的查询compenstate?

--------------解决方案-------------

它可能是一些您的推荐字符串不包含?字符。

如果没有匹配,则PATINDEX将返回0。

然后,子将试图从1引荐字符串的字符得到为-1。

您可能需要换行的声明与第二叫一个case语句PATINDEX除非有人想出了一个更好的解决方法:

select
case patindex('%?%', Referrer)
when 0 then Referrer
else substring(Referrer , 1, patindex('%?%', Referrer) - 1)
end as URL
from dbo.tableA MRD
JOIN dbo.tableB mm
ON mm.MetId = MRD.MetId
AND mm.MetId = 4

分类:SQL 时间:2015-03-16 人气:4
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.767 (s). 10 q(s)