很多時候我們要批量操作的時候不方便一條條的傳資料,就把所有的資料用乙個符號拼接在一起比如兩個id:123和456,我們可以用個@符號拼接成:123@456@ ,到了資料庫就需要進行分割,下面先附上一段**
set quoted_identifier on
set ansi_nulls on
gocreate function [dbo].[l_splitstr_one]
( @sourcesql1 varchar(max),
@strseprate char(1)
)
returns @temp table(str1 varchar(200))
as
begin
declare @str1 varchar(200)
while(@sourcesql1 <> '')
begin
set @str1=left(@sourcesql1,charindex(@strseprate,@sourcesql1,1)-1)
set @sourcesql1=stuff(@sourcesql1,1,charindex(@strseprate,@sourcesql1,1),'')
insert @temp values(@str1)
end
return
endgo
這是自己定義的乙個切割函式的所有**,sql server裡面的,切割一種型別的字段的,總得來說就是呼叫了charindex函式,left函式和stuff函式,
假設傳入的引數是123@456@
1.定義乙個臨時表並將此表返回,這個表裡定義好需要切割的資料的型別的字段
2.定義乙個變數,來接收要插入到臨時表的資料
3.迴圈,當傳入的引數不為空的時候,使用charindex函式,是返回某字元在乙個字串中第一次出現的位置,第乙個引數是要尋找的字元,第二個是字串(在這裡面尋找),第三個引數是從什麼位置開始,那麼123@456@的第一次出現@的位置是在4,然後呼叫left函式,擷取從左邊起擷取(4-1)個字元,也就是123,賦值給str1
4.呼叫stuff函式,stuff函式可以翻翻我寫的部落格,有講解,從第乙個位置開始,刪除4個字元(charindex(@strseprate,@sourcesql1,1)),然後插入空字串,相當於沒有插入,接著返回乙個新的字串,也就是123@456@從1開始刪除,刪除4個字元,那麼返回456@
5.將str1插入到臨時表
資料庫拆分切割記錄
因a庫資料量太大,達到600g,現在將a庫資料,按照路由分庫規則,將部分資料遷移到b庫。1 首先級聯複製,將b庫作為a庫的從庫。將資料同步複製到b庫 2 修改 中資料來源 路由規則等資訊。如果資料來源有許可權設定,記的要將新的資料來源賦權。3 發布 此時已經開始按照新的路由規則在分配資料。此時會產生...
資料庫的datepart函式
資料庫的datepart函式 返回代表指定日期的指定日期部分的整數。語法 datepart datepart,date 是指定應返回的日期部分的引數。下表列出了 microsoft sql server 識別的日期部分和縮寫。日期部分 縮寫yearyy,yyyy quarterqq,q monthm...
mysql資料庫的函式
2 數學函式 3select ceiling count 5.0 from news 取大於結果的最小整數 4select floor count 5.0 from news 取小於結果的最大整數 5select sqrt 2 數值開平方 6select round 3.45645,2 7selec...