我试图形成正确的If
或Case statement
以仅在Substring
函数中有匹配项时选择PatIndex()
。
以下查询部分起作用。问题是PatIndex()
中没有匹配项,它返回0,然后substring
函数从返回的每个其他URL返回第3列开始的4个字符。我想跳过这些与模式不匹配的URL。
我尝试过
Case PatIndex('%ID=%',URL) > 1
但是我在'>'附近收到语法错误,不确定为什么。
select distinct Url, Username, substring(Url, (PatIndex('%ID=%', Url)+3), 4) as RID
from tblWebSiteUsage
where dateandtime > '2-16-2018 12:00:00 am'
答案 0 :(得分:0)
您只能使用WHERE子句过滤具有URL
的{{1}}:
ID=
答案 1 :(得分:0)
您更新后的查询以获取仅包含字符串“ ID =”的URL。
select distinct Url, Username, substring(Url, (PatIndex('%ID=%', Url)+3), 4) as RID
from tblWebSiteUsage
where dateandtime > '2-16-2018 12:00:00 am' and Url like '%ID=%'
答案 2 :(得分:0)
此case语句应在从网址中提取ID之前检查是否存在模式匹配,如果网址中没有ID =,则返回null
select
distinct Url,
Username,
case when PatIndex('%ID=%', Url) > 0
then substring(Url, (PatIndex('%ID=%', Url)+3), 4)
else null
end as RID
from tblWebSiteUsage
where dateandtime > '2-16-2018 12:00:00 am'`