這篇文章主要講解了“實(shí)用的SQL Server腳本函數(shù)方法有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“實(shí)用的SQL Server腳本函數(shù)方法有哪些”吧!
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、瑞昌網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為瑞昌等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
1、字符串指定字符分割為list
-- 字符串指定字符分割為list CREATE FUNCTION [dbo].[splitl] ( @String VARCHAR(MAX), @Delimiter VARCHAR(MAX) ) RETURNS @temptable TABLE (items VARCHAR(MAX)) AS BEGIN DECLARE @idx INT=1 DECLARE @slice VARCHAR(MAX) IF LEN(@String) < 1 OR LEN(ISNULL(@String,'')) = 0 RETURN WHILE @idx != 0 BEGIN SET @idx = CHARINDEX(@Delimiter,@String) IF @idx != 0 SET @slice = LEFT(@String,@idx - 1) ELSE SET @slice = @String IF LEN(@slice) > 0 INSERT INTO @temptable(items) VALUES(@slice) SET @String = RIGHT (@String, LEN(@String) - @idx) IF LEN(@String) = 0 BREAK END RETURN END GO -- 調(diào)用方式 SELECT * FROM dbo.splitl('aaa|bbb|ccc','|')
2、數(shù)字去掉末尾的0
-- 數(shù)字去掉末尾的0 CREATE function [dbo].[ClearZero](@inValue varchar(50)) returns varchar(50) as begin declare @returnValue varchar(20) if(@inValue='') set @returnValue='' --空的時(shí)候?yàn)榭?nbsp;else if (charindex('.',@inValue) ='0') set @returnValue=@inValue --針對(duì)不含小數(shù)點(diǎn)的 else if ( substring(reverse(@inValue),patindex('%[^0]%',reverse(@inValue)),1)='.') set @returnValue = left(@inValue,len(@inValue)-patindex('%[^0]%',reverse(@inValue))) --針對(duì)小數(shù)點(diǎn)后全是0的 else set @returnValue =left(@inValue,len(@inValue)- patindex('%[^0]%.%',reverse(@inValue))+1) --其他任何情形 return @returnValue end --調(diào)用示例 SELECT dbo.ClearZero(258.250300)
3、創(chuàng)建表、視圖、函數(shù)、存儲(chǔ)過程判斷是否存在
/*判斷函數(shù)/方法是否存在,若存在則刪除函數(shù)/方法*/ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'Func_Name') DROP FUNCTION Func_Name; GO --創(chuàng)建函數(shù)/方法 CREATE FUNCTION Func_Name ( @a INT ) RETURN INT AS BEGIN --coding END GO /*判斷存儲(chǔ)過程是否存在,若存在則刪除存儲(chǔ)過程*/ IF EXISTS (OBJECT_NAME('Proc_Name','P') IS NOT NULL DROP PROC Proc_Name; GO --創(chuàng)建存儲(chǔ)過程 CREATE PROC Proc_Name AS SELECT * FROM Table_Name GO /*判斷數(shù)據(jù)表是否存在,若存在則刪除數(shù)據(jù)表*/ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'Table_Name') DROP VIEW Table_Name; GO --創(chuàng)建數(shù)據(jù)表 CREATE TABLE Table_Name ( Id INT PRIMARY KEY NOT NULL ) /*判斷視圖是否存在,若存在則刪除視圖*/ IF EXISTS (SELECT * FROM sys.views WHERE name = 'View_Name') DROP VIEW View_Name GO --創(chuàng)建視圖 CREATE VIEW View_Name AS SELECT SELECT * FROM table_name GO
4、金額轉(zhuǎn)換為大寫
/* 說明:數(shù)字金額轉(zhuǎn)中文金額 示例:187.4 轉(zhuǎn)成 壹佰捌拾柒圓肆角整 */ CREATE FUNCTION [dbo].[CNumeric](@num numeric(14,2)) returns nvarchar(100) BEGIN Declare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i int Set @n_data=right(space(14)+cast(cast(abs(@num*100) as bigint) as nvarchar(20)),14) Set @c_data='' Set @i=1 WHILE @i<=14 Begin set @n_str=substring(@n_data,@i,1) if @n_str<>'' begin IF not ((SUBSTRING(@n_data,@i,2)= '00') or ((@n_str= '0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14)))) SET @c_data=@c_data+SUBSTRING( N'零壹貳叁肆伍陸柒捌玖',CAST(@n_str AS int)+1,1) IF not ((@n_str= '0') and (@i <> 4) and (@i <> 8) and (@i <> 12)) SET @c_data=@c_data+SUBSTRING( N'仟佰拾億仟佰拾萬仟佰拾圓角分',@i,1) IF SUBSTRING(@c_data,LEN(@c_data)-1,2)= N'億萬' SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1) END SET @i=@i+1 END IF @num <0 SET @c_data= '(負(fù)數(shù))'+@c_data IF @num=0 SET @c_data= '零圓' IF @n_str= '0' SET @c_data=@c_data+ '整' RETURN(@c_data) END
感謝各位的閱讀,以上就是“實(shí)用的SQL Server腳本函數(shù)方法有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)實(shí)用的SQL Server腳本函數(shù)方法有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!