三级数据库:MSSQLServer字符串截取
来源:优易学  2011-6-13 13:11:20   【优易学:中国教育考试门户网】   资料下载   IT书店
  公司日志系统变态,用户操作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个字符应该足够用了。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训