問題是: a/a/b/b/b/b/c/c/c/c要得到的資料是a/b/c(sqlserver中某列的資料,如果出現這種情況,就是有相同的只要乙個)
use [booksbrothersweborder]
go/****** object: userdefinedfunction [dbo].[fx_split] script date: 08/13/2012 13:56:28 ******/
set ansi_nulls on
goset quoted_identifier on
goalter function [dbo].[fx_split]
(@splitstring varchar(200),-- 需要分隔的字串
@separator varchar(2) --分隔符哈
)returns varchar(800)
asbegin
declare @currentindex int --當前索引
declare @nextindex int --下一位索引
declare @returntext varchar(200)-- 返回文字值
declare @returntexttotal varchar(800) --返回一條總和字串
set @currentindex=1 --默念當前索引表示和第一位開始
set @returntexttotal = ''
declare @flag int
while(@currentindex<=len(@splitstring))--要分隔字串的長度 當滿足條件就會跳出
begin
select @nextindex=charindex(@separator,@splitstring,@currentindex);--得到分隔符的位置
if(@nextindex=0 or @nextindex is null) --如果是0或者空得到新索引的長度
select @nextindex=len(@splitstring)+1;
select @returntext=substring(@splitstring,@currentindex,@nextindex-@currentindex); --擷取返回
select @currentindex=@nextindex+1; --索引依次變化
select @flag= [dbo].[cgf_fn_searchchar](@returntexttotal,@returntext)--取得函式返回值
if(@flag=0)--表示不包含
set @returntexttotal=@returntexttotal+@returntext+'/' --就自動新增
--else --表示包含
-- set @returntexttotal=@returntext+'/'
endset @returntexttotal=substring(@returntexttotal,0,len(@returntexttotal))
return @returntexttotal
end/*
判斷乙個字串是否包含另外乙個字串
逐字擷取搜尋字串迴圈與待搜尋字元進行比較
*/alter function [dbo].[cgf_fn_searchchar]
(@instr varchar(500), --表示要比較的
@fndstr varchar(500) --表示要查詢的
)
returns int
as
begin
declare @i int,
@f int,
@c varchar(1)
set @i = 1 --從1開始
set @f = len(@fndstr)--得麼長度
while(@i <= @f)
begin
set @c = substring(@fndstr, @i, @i) --逐字擷取搜尋字串迴圈與待搜尋字元進行比較
if(charindex(@c,@instr) > 0) --表示是否存在
begin
return 1 --存在返回1
endset @i = @i + 1 --自加上,好逐個比較
endreturn 0 --返回0表示沒有
end
sqlserver取相同列下其餘不同列的資料連線
今天在專案中遇到的這個問題,確實糾結我挺久的。其實這種需求如果用 來實現的話只需要乙個典然後就能實現,然而,有時候就偏偏讓你寫個sql,然後就去執行下就ok了,因此,問題就來了 標題挺亂的,也取得很不好 其實這裡的思想很簡單,就是分列插入臨時表,然後處理臨時表,最終得到結果 語文能力很差,那就直接上...
Fiddler 只取所需
fiddler每次開啟的時候都會開啟十多個會話,期望只想抓取自己想要的請求。1 user filters 啟用過濾器 2 在filers面板中勾選 use filters 並在hosts區域,設定以下三個選項 a.第一項有三個選項,分別是 no zone filter show only intra...
關於多條id相同,只取一條記錄得sql語句
sqlserver 2005 中 create table dbo mian id int not null,name varchar 50 collate chinese prc ci as null,age int null,state bit not null 執行2遍,則共8條記錄 inse...