就业数据资源平台
当前位置:首页 > 数据库技术
SQLServer字符串的截取

公司日志系统变态,用户操作url记录在数据库中,我需要从一条信息中找到参数pid的值,而pid参数后面是否有参数未知,无奈只好自己写个函数处理。

  数据库是M$的 SQL 2005


  Sql代码


  SET ANSI_NULLS ON


  GO


  SET QUOTED_IDENTIFIER ON


  GO


  -- =============================================


  -- Author:


  Snowolf


  -- Create date: 2008-10-17


  -- Description:


  从URL中获取参数值


  -- =============================================


  CREATE FUNCTION getParam(@url nvarchar(max),@param nvarchar(max))


  RETURNS nvarchar(max)


  AS


  BEGIN


  declare


  @separator nvarchar(max),


  -- 分隔符


  @base nvarchar(max),


  @index int


  set @separator='&'


  -- 截取参数名开头的字符串


  -- 'abc.do?pid=12124123&x=5'


  -- 变为


  -- 'pid=12124123&x=5'


  set @base = substring(@url,charindex(@param,@url,0),400)


  -- 替换掉参数头


  set @base = replace(@base,(@param+'='),'')


  -- 'pid=12124123&x=5'


  -- 变为


  -- '12124123&x=5'


  -- 基于上述结果取得分隔符位置


  set @index = charindex(@separator,@base,0)


  -- 当分割符存在则替换&符号开始的全部信息


  -- 当分割符不存在则直接返回


  RETURN (case @index when 0 then @base else replace(@base,substring(@base,@index,400),'') end)


  END


  GO


  至于,这个字符串该有多大,400个字符应该足够用了。

就业数据资源平台