数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
生活随笔
收集整理的這篇文章主要介紹了
数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
1、字符串指定字符分割為list
功能:主要適用于數據庫字段存儲字段用逗號等分隔符存儲,可以轉換為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 -- 調用方式 SELECT * FROM dbo.splitl('aaa|bbb|ccc','|')2、數字去掉末尾的0
功能:適用數字字段需要去掉末尾的零。
-- 數字去掉末尾的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 --針對不含小數點的 else if ( substring(reverse(@inValue),patindex('%[^0]%', reverse(@inValue)),1)='.')set @returnValue =left(@inValue,len(@inValue)-patindex('%[^0]%',reverse(@inValue))) --針對小數點后全是0的elseset @returnValue =left(@inValue,len(@inValue)- patindex('%[^0]%.%',reverse(@inValue))+1) --其他任何情形 return @returnValue end --調用示例 SELECT dbo.ClearZero(258.250300)3、創建表、視圖、函數、存儲過程判斷是否存在
功能:執行腳本判斷是否存在,這樣可以多個腳本一次性執行了。
/*判斷函數/方法是否存在,若存在則刪除函數/方法*/ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'Func_Name') DROP FUNCTION Func_Name;GO --創建函數/方法 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 --創建存儲過程 CREATE PROC Proc_Name AS SELECT * FROM Table_Name GO /*判斷數據表是否存在,若存在則刪除數據表*/ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'Table_Name')DROP VIEW Table_Name; GO --創建數據表 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 --創建視圖 CREATE VIEW View_Name ASSELECT SELECT * FROM table_name GO4、金額轉換為大寫
功能:適用一些發票打印、財務憑證等場景,需要把金額轉換為大寫功能
/*說明:數字金額轉中文金額示例:187.4 轉成 壹佰捌拾柒圓肆角整 */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= '(負數)'+@c_dataIF @num=0SET @c_data= '零圓'IF @n_str= '0'SET @c_data=@c_data+ '整'RETURN(@c_data) END以上是分享內容,感謝閱讀,歡迎收藏、點贊、轉發。您的支持是我最大的創作動力,有問題可以留言大家共同進步!
IT技術分享社區
個人博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識
總結
以上是生活随笔為你收集整理的数据库:分享四个实用的SQLServer脚本函数,欢迎收藏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怪物猎人online 日服 注册流程(原
- 下一篇: mysql中基本的DDL语句(关注一下,