数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
生活随笔
收集整理的這篇文章主要介紹了
数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
1、字符串指定字符分割為list
功能:主要適用于數(shù)據(jù)庫字段存儲字段用逗號等分隔符存儲,可以轉(zhuǎn)換為list然后用子查詢使用。
-- 字符串指定字符分割為list CREATE FUNCTION [dbo].[splitl] (@String VARCHAR(MAX),@Delimiter VARCHAR(MAX) ) RETURNS @temptable TABLE (items VARCHAR(MAX)) AS BEGINDECLARE @idx INT=1DECLARE @slice VARCHAR(MAX) IF LEN(@String) < 1 OR LEN(ISNULL(@String,'')) = 0RETURNWHILE @idx != 0BEGINSET @idx = CHARINDEX(@Delimiter,@String)IF @idx != 0SET @slice = LEFT(@String,@idx - 1)ELSESET @slice = @StringIF LEN(@slice) > 0INSERT INTO @temptable(items) VALUES(@slice)SET @String = RIGHT (@String, LEN(@String) - @idx)IF LEN(@String) = 0BREAKENDRETURN END GO -- 調(diào)用方式 SELECT * FROM dbo.splitl('aaa|bbb|ccc','|')2、數(shù)字去掉末尾的0
功能:適用數(shù)字字段需要去掉末尾的零。
-- 數(shù)字去掉末尾的0 CREATE function [dbo].[ClearZero](@inValue varchar(50)) returns varchar(50) as begin declare @returnValue varchar(20) if(@inValue='')set @returnValue='' --空的時候為空 else if (charindex('.',@inValue) ='0')set @returnValue=@inValue --針對不含小數(shù)點的 else if ( substring(reverse(@inValue),patindex('%[^0]%', reverse(@inValue)),1)='.')set @returnValue =left(@inValue,len(@inValue)-patindex('%[^0]%',reverse(@inValue))) --針對小數(shù)點后全是0的elseset @returnValue =left(@inValue,len(@inValue)- patindex('%[^0]%.%',reverse(@inValue))+1) --其他任何情形 return @returnValue end --調(diào)用示例 SELECT dbo.ClearZero(258.250300)3、創(chuàng)建表、視圖、函數(shù)、存儲過程判斷是否存在
功能:執(zhí)行腳本判斷是否存在,這樣可以多個腳本一次性執(zhí)行了。
/*判斷函數(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 /*判斷存儲過程是否存在,若存在則刪除存儲過程*/ IF EXISTS (OBJECT_NAME('Proc_Name','P') IS NOT NULL DROP PROC Proc_Name; GO --創(chuàng)建存儲過程 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 ASSELECT SELECT * FROM table_name GO4、金額轉(zhuǎn)換為大寫
功能:適用一些發(fā)票打印、財務(wù)憑證等場景,需要把金額轉(zhuǎn)換為大寫功能
/*說明:數(shù)字金額轉(zhuǎn)中文金額示例:187.4 轉(zhuǎn)成 壹佰捌拾柒圓肆角整 */CREATE FUNCTION [dbo].[CNumeric](@num numeric(14,2))returns nvarchar(100) BEGINDeclare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i intSet @n_data=right(space(14)+cast(cast(abs(@num*100) as bigint) as nvarchar(20)),14)Set @c_data=''Set @i=1WHILE @i<=14Beginset @n_str=substring(@n_data,@i,1)if @n_str<>''beginIF 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)ENDSET @i=@i+1ENDIF @num <0SET @c_data= '(負數(shù))'+@c_dataIF @num=0SET @c_data= '零圓'IF @n_str= '0'SET @c_data=@c_data+ '整'RETURN(@c_data) END以上是分享內(nèi)容,感謝閱讀,歡迎收藏、點贊、轉(zhuǎn)發(fā)。您的支持是我最大的創(chuàng)作動力,有問題可以留言大家共同進步!
IT技術(shù)分享社區(qū)
個人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協(xié)助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的数据库:分享四个实用的SQLServer脚本函数,欢迎收藏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怪物猎人online 日服 注册流程(原
- 下一篇: mysql中基本的DDL语句(关注一下,