环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 计算机类 > 计算机等级考试 > 考试辅导 >

三级数据库:MSSQLServer字符串截取

2010-06-27 来源:互联网 作者:第一考试网

三级数据库:MSSQLServer字符串截取

#

  公司日志系统变态,用户操作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个字符应该足够用了。
#

责编:admin 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心