sqlserver相同字元只取乙個

2022-01-23 09:22:41 字數 2188 閱讀 4651

問題是: 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...