MS SQL Server 字符串截取

公司日誌系統變態,用戶操作url記錄在數據庫中,我需要從一條信息中找到參數pid的值,而pid參數後面是否有參數未知,無奈只好自己寫個函數處理。
數據庫是M$的 SQL 2005

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個字符應該足夠用了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章