如何从T-SQL中的字段中删除Querystring?

Bra*_*don 1 t-sql sql-server sql-server-2005

我有一个充满日志的SQL表,显示了我的页面的响应时间.例如:

/MyPage1.aspx
/MyPage2.aspx
/MyPage3.aspx?index=4
/MyPage3.aspx?index=5
/MyPage3.aspx?index=7
Run Code Online (Sandbox Code Playgroud)

但是,我想创建一个视图,向我显示每个页面的平均加载时间.为此,我不希望包含查询字符串,因为我只想在问号之前按URL分组页面(因此/MyPage3.aspx只显示一次).

这里删除查询字符串的字符串函数是什么?

G M*_*ros 7

这里棘手的部分是....数据并不总是包含?标记.你能找到的位置吗?使用charindex,但要选择它左边的数据,你需要使用CharIndex - 1.如果?找不到,CharIndex返回0,Left(数据,0-1)导致错误.

简单的解决方案是确保CharIndex总能找到一些东西.像这样:

Select Left(URL, CharIndex('?', URL + '?')-1)
From   @Temp
Run Code Online (Sandbox Code Playgroud)

请注意,我执行URL +'的'CharIndex?'.如果数据不包含问号,则charindex函数将返回一个大于字符串长度的值1,该字符串对左函数很有效.