Categories
最新消息

四個實用的SQL Server資料庫腳本函數


今天給大家分享四個在實際開發中,比較實用的SQL Server腳本函數,希望對大家能有所幫助!

四個實用的SQL Server資料庫腳本函數

1、字元串指定字元分割為list

— 字元串指定字元分割為list

創建功能 [dbo]。[splitl] (

@String VARCHAR(MAX),

@Delimiter VARCHAR(最大)

)返回@temptable表(項VARCHAR(MAX))AS

開始

宣告@idx INT = 1

宣告@slice VARCHAR(MAX)

如果LEN(@String)<1或LEN(ISNULL(@String,”))= 0

返回

@idx!= 0時

開始

SET @idx = CHARINDEX(@分隔符,@ String)

如果@idx!= 0

SET @slice =左(@ String,@ idx – 1)

其他

SET @切片= @String

如果LEN(@slice)> 0

插入@temptable(items)VALUES(@slice)

SET @String = RIGHT(@String,LEN(@String)– @idx)

如果LEN(@String)= 0

打破

結束

返回

結束

— 調用方式

SELECT * FROM dbo.splitl(’aaa | bbb | ccc’,’|’)

2、數字去掉末尾的0

— 數字去掉末尾的0

創建功能 [dbo]。[ClearZero](@inValue varchar(50))

返回varchar(50)

開始

聲明@returnValue varchar(20)

if(@ inValue =”)

set @returnValue=” –空的時候為空

否則(charindex(’。’,@ inValue)=’0’)

設置@[email protected] –針對不含小數點的

否則if(substring(reverse(@inValue),patindex(’%[^0]%’,reverse(@inValue)),1)=’。’)

設置@returnValue =

左(@ inValue,len(@inValue)-patindex(’%[^0]%’,reverse(@inValue)))

–針對小數點后全是0的

其他

設置@returnValue = left(@ inValue,len(@inValue)-

patindex(%[^0]%.%’,reverse(@inValue))+1) –其他任何情形

返回@returnValue

結束

–調用示例

選擇dbo.ClearZero(258.250300)

3、創建表、視圖、函數、存儲過程判斷是否存在

/*判斷函數/方法是否存在,若存在則刪除函數/方法*/

如果存在(選擇*從dbo.sysobjects中,WHERE名稱=’Func_Name’)

DROP FUNCTION Func_Name;

–創建函數/方法

創建函數Func_Name

@a INT

返回INT

開始

-編碼

結束

/*判斷存儲過程是否存在,若存在則刪除存儲過程*/

如果存在(OBJECT_NAME(’Proc_Name’,’P’)不為空DROP PROC Proc_Name;

–創建存儲過程

創建PROC Proc_Name

AS SELECT * FROM Table_Name

/*判斷數據表是否存在,若存在則刪除數據表*/

如果存在(SELECT * FROM dbo.sysobjects,其中name =’Table_Name’)

DROP VIEW Table_Name;

–創建數據表

創建表Table_Name

ID INT PRIMARY KEY NOT NULL

/*判斷視圖是否存在,若存在則刪除視圖*/

如果存在(SELECT * FROM sys.views,WHERE名稱=’View_Name’)

DROP VIEW View_Name

–創建視圖

創建視圖View_Name AS

SELECT SELECT * FROM table_name

4、金額轉換為大寫

/ *

說明:數字金額轉中文金額

示例:187.4 轉成 壹佰捌拾柒圓肆角整

* /

創建功能 [dbo]。[CNumeric](@數字(14.2))

返回nvarchar(100)

開始

聲明@n_data nvarchar(20),@ c_data nvarchar(100),@ n_str nvarchar(10),@ i int

將@ n_data = right(space(14)+ cast(cast(abs(@ num * 100)as bigint)設置為nvarchar(20)),14)

設置@ c_data =”

設置@ i = 1

@i <= 14時

開始

設置@ n_str = substring(@ n_data,@ i,1)

如果@n_str <>”

開始

如果不是((SUBSTRING(@ n_data,@ i,2)=’00’)或

((@ n_str =’0’)和((@ i = 4)或(@ i = 8)或(@ i = 12)或(@ i = 14)))

設置@[email protected]_data+SUBSTRING( N’零壹貳叄肆伍陸柒捌玖’,CAST(@n_str AS int)+1,1)

如果不是((@ n_str =’0’)和(@i <> 4)和(@i <> 8)和(@i <> 12))

設置@[email protected]_data+SUBSTRING( N’仟佰拾億仟佰拾萬仟佰拾圓角分’,@i,1)

如果SUBSTRING(@ c_data,LEN(@c_data)-1,2)= N’億萬’

SET @ c_data = SUBSTRING(@ c_data,1,LEN(@c_data)-1)

結束

設置@[email protected]+1

結束

如果@num <0

SET @c_data= ‘(負數)’[email protected]_數據

如果@ num = 0

SET @c_data= ‘零圓’

如果@ n_str =’0′

設置@[email protected]_data+ ‘整’

返回(@c_data)

結束