資料庫的切割函式

2021-09-01 10:25:33 字數 1281 閱讀 7007

很多時候我們要批量操作的時候不方便一條條的傳資料,就把所有的資料用乙個符號拼接在一起比如兩個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...