SQLServer字符串的截取

浏览:
字体:
发布时间:2013-12-10 00:20:45
来源:
公司日志系统变态,用户操作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个字符应该足够用了。

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();