sql自定义函数大全

CREATE FUNCTION [dbo].[f_AddYears]
(
---增加年
@currentDay DATETIME ,
@years INT
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(year,@years,@currentDay)
END

--增加月
CREATE FUNCTION [dbo].[f_AddMonths]
(
---增加月
@currentDay DATETIME ,
@months INT
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(month,@months,@currentDay)
END

--增加日
CREATE FUNCTION [dbo].[f_AddDays]
(
---增加日
@currentDay DATETIME ,
@days INT
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(day,@days,@currentDay)
END

----增加秒数
CREATE FUNCTION [dbo].[f_AddSeconds]
(
---增加秒数
@currentDay DATETIME ,
@seconds INT
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(ss,@seconds,@currentDay)
END

---返回日期部分
CREATE FUNCTION [dbo].[f_getDate] ( ---返回日期部分
@currentDay DATETIME )
RETURNS DATETIME
AS
BEGIN
RETURN CONVERT(DATETIME,CONVERT(CHAR(08),@currentDay,112))
END

--返回日期的结束时间
CREATE FUNCTION [dbo].[f_getEndTime] ( ---返回日期的结束时间
@currentDay DATETIME )
RETURNS DATETIME
AS
BEGIN
RETURN dbo.[f_AddSeconds](dbo.f_getDate(@currentDay),24*60*60-1)
END

--字符串拆分
CREATE FUNCTION [dbo].[f_split]
(
@string VARCHAR(MAX) ,
@separator CHAR
)
RETURNS @return TABLE ( value VARCHAR(200) )
AS
BEGIN
DECLARE @len INT
SET @len = LEN(@string)
IF ( SUBSTRING(@string, @len, 1) <> @separator )
SET @string = @string + @separator
DECLARE @strtemp VARCHAR(200)
DECLARE @index1 INT
DECLARE @index2 INT
SET @index1 = 0
SET @index2 = CHARINDEX(@separator, @string, 1)

WHILE @index2 <> 0
BEGIN
SET @strtemp = SUBSTRING(@string, @index1 + 1,
@index2 - @index1 - 1)
INSERT @return
( [value] )
VALUES ( @strtemp )
SET @index1 = @index2
SET @index2 = CHARINDEX(@separator, @string, @index1 + 1)
END
RETURN
END

--MD5加密
CREATE FUNCTION [dbo].[f_md5]
(
@string VARCHAR(MAX), --加密字符串
@WhatBit INT --位数
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @order VARCHAR(50)
SET @order = RIGHT(sys.fn_VarBinToHexStr(hashbytes(‘MD5‘, CAST(@string AS VARCHAR(MAX)))), @WhatBit);
RETURN (@order)--分割的后字符串
END

---获取后字符串
CREATE FUNCTION [dbo].[f_splitString]
(
@string VARCHAR(MAX) ,--要分割的字符串
@splitChar VARCHAR(10)--分割字符
)
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @order VARCHAR(20)
SET @order = SUBSTRING(@string,
CHARINDEX(@splitChar, @string) + LEN(@splitChar),
LEN(@string) - CHARINDEX(@splitChar, @string)
- ( LEN(@splitChar) - 1 )) ;
RETURN (@order)--分割的后字符串
END

--转义字符转换
CREATE FUNCTION [dbo].[fun_ReplaceKey] ( @key VARCHAR(MAX) )
RETURNS VARCHAR(MAX)
AS
BEGIN
SET @key = REPLACE(@key, ‘<‘, ‘<‘)
SET @key = REPLACE(@key, ‘<=‘, ‘<=‘)
SET @key = REPLACE(@key, ‘>‘, ‘>‘)
SET @key = REPLACE(@key, ‘>=‘, ‘>=‘)
SET @key = REPLACE(@key, ‘&‘, ‘‘‘‘)
SET @key = REPLACE(@key, ‘"‘, ‘\"‘)
SET @key = REPLACE(@key, ‘‘, ‘\r\n‘)
RETURN @key
END

---获取分割字符串个数
CREATE FUNCTION [dbo].[GetSplitLength]
(
@String NVARCHAR(MAX) , --要分割的字符串
@Split NVARCHAR(10) --分隔符号
)
RETURNS INT
AS
BEGIN
DECLARE @location INT
DECLARE @start INT
DECLARE @length INT
SET @String = LTRIM(RTRIM(@String))
SET @location = CHARINDEX(@split, @String)
SET @length = 1
WHILE @location <> 0
BEGIN
SET @start = @location + 1
SET @location = CHARINDEX(@split, @String, @start)
SET @length = @length + 1
END
RETURN @length
END

--获取分割字符串的定位字符
CREATE FUNCTION [dbo].[GetSplitOfIndex]
(
@String NVARCHAR(MAX) , --要分割的字符串
@split NVARCHAR(10) , --分隔符号
@index INT --取第几个元素
)
RETURNS NVARCHAR(1024)
AS
BEGIN
DECLARE @location INT
DECLARE @start INT
DECLARE @next INT
DECLARE @seed INT

SET @String = LTRIM(RTRIM(@String))
SET @start = 1
SET @next = 1
SET @seed = LEN(@split)

SET @location = CHARINDEX(@split, @String)
WHILE @location <> 0
AND @index > @next
BEGIN
SET @start = @location + @seed
SET @location = CHARINDEX(@split, @String, @start)
SET @next = @next + 1
END
IF @location = 0
SELECT @location = LEN(@String) + 1

RETURN SUBSTRING(@String,@start,@[email protected])
END

原文地址:https://www.cnblogs.com/zengtianli/p/8625290.html

时间: 2024-08-29 03:28:20

sql自定义函数大全的相关文章

SQL Server函数大全

SQL Server函数大全 SQL Server中的函数对于提高查询的工作效率起到了非常突出的作用.善于在查询工作或开发工作中利用好SQL函数,将对工作有很大的帮助,同时也会大大提升工作的效率.但是由于SQL函数种类众多.所以在使用的时候往往会无法全部理解它们的含义和用法.下面将详细对SQL函数的含义和使用方法做一个比较系统的介绍: 在实际工作中,select语句中只能使用SQL函数对字段进行操作,常见的函数可以分为以下几大类: 1.字符转换函数 1)ASCII() 返回字符表达式最左端字符的

SQL自定义函数split分隔字符串

SQL自定义函数split分隔字符串 一.F_Split:分割字符串拆分为数据表 Create FUNCTION [dbo].[F_Split] ( @SplitString nvarchar(max), --源字符串 @Separator nvarchar(10)=' ' --分隔符号,默认为空格 ) RETURNS @SplitStringsTable TABLE --输出的数据表 ( [id] int identity(1,1), [value] nvarchar(max) ) AS BE

sql自定义函数及C#中调用

1.在C#中调用sql自定义函数 1.1 标量值函数 sql语句调用 select  dbo.GetClassIDWithName(1) string strSql = string.Format("select dbo.GetClassIDWithName('{0}')",dtTime);DataTable dt = DB_Contrast.DB.OleDbHelper.GetDataTable(strSql); 1.2 表值函数 sql语句调用 select * from GetA

SQL 自定义函数(Function)——参数默认值

sql server 自定义函数分为三种类型:标量函数(Scalar Function).内嵌表值函数(Inline Function).多声明表值函数(Multi-Statement Function) 标量函数:标量函数是对单一值操作,返回单一值. 内嵌表值函数:内嵌表值函数的功能相当于一个参数化的视图.它返回的是一个表,内联表值型函数没有由BEGIN-END 语句括起来的函数体. 多声明表值函数:它的返回值是一个表,但它和标量型函数一样有一个用BEGIN-END 语句括起来的函数体,返回值

sql 自定义函数--固定格式字符转时间类型

遇到一个德国的客户,他们的时间格式是JJJJ-TT-DD HH:MM:SS,程序按照这个格式将时间插入数据库,但是在sql自带的转换函数convert.cast过程中报错,网上搜了下都说用convert.cast可以直接转换,但是这个客户的机器就是不行,没有办法自己写了个转换函数,供大家参考: 由于自定义函数里面不能直接使用getdate方法:所以先创建了个获取本地时间的小函数: create view v_getdate as select getdate() as now_date 然后是转

SQL自定义函数function

https://blog.csdn.net/qq_23833037/article/details/53170789 https://www.cnblogs.com/youring2/p/4916400.html 用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回. sql函数必须有返回值. ps: 函数看成一个处理某些数据的功能,因有返回值,则在代码使用中,需要一个处理过的数据. 可直接调用函数处理数据,返回数据给代码使用. 标量函数:返回一个标量值. 表格值函数{内联表

PL/SQL自定义函数

从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数据类型,而非PL/SQL特殊的类型 从SQL表达式中调用的函数不能包含DML语句 从在表T上的UPDATE/DELETE语句中调用的函数,函数内容不能包含在同一个表T上的DML 从在表T上的UPDATE或DELETE语句中调用的函数,函数内容不能查询同一个表 从SQL语句中调用的函数不能包含结束事物

php 自定义函数大全

1. call_user_func和call_user_func_array 以上两个函数以不同的参数形式调用函数.见如下示例: <?php class demo{ public static function action1() { echo "This is demo::action1.<br>"; } public function action2() { echo "This is demo::action2.<br>"; }

SQL Server2008函数大全(完整版)

SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) select ascii('abc') 返回 97 返回字符串中最左侧的字符的ASCII 码. char(整数表达式) select char(100) 返回 d 把ASCII 码转换为字符. 介于0 和 255 之间的整数.如果该整数表达式不在此范围内,将返回 NULL 值. charindex(字符串表达式 1, 字符串表达式2[,整数表达式])