问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL SERVER函数之深入表值函数的处理分析

发布网友 发布时间:2022-04-08 04:25

我来回答

2个回答

懂视网 时间:2022-04-08 08:47

function [dbo].[Get_StrArrayStrOfIndex] ( @str nvarchar(max), --要分割的字符串 @split varchar(10), --分隔符号 @index int --取第几个元素 ) returns varchar(1024) as begin declare @location int declare @start int declare @next int declare @seed int set @str=ltrim(rtrim(@str)) set @start=1 set @next=1 set @seed=len(@split) set @location=charindex(@split,@str) while @location<>0 and @index>@next begin set @start=@location+@seed set @location=charindex(@split,@str,@start) set @next=@next+1 end if @location =0 select @location =len(@str)+1 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。 return substring(@str,@start,@location-@start) end GO

获取逗号分隔的字符串的个数

CREATE function [dbo].[Get_StrArrayLength]
(
 @str nvarchar(max), --要分割的字符串
 @split varchar(10) --分隔符号
)
returns int
as
begin
 declare @location int
 declare @start int
 declare @length int

 set @str=ltrim(rtrim(@str))
 set @location=charindex(@split,@str)
 set @length=1
 while @location<>0
 begin
 set @start=@location+1
 set @location=charindex(@split,@str,@start)
 set @length=@length+1
 end
 return @length
end

GO

 

按照某个符号分割字符串 翻来一张表

CREATE FUNCTION [dbo].[SplitStringToTable] 
( 
 @String nvarchar(4000), --格式如:“1,2,3,4,”
 @SplitChar nvarchar(10) --分割的字符:“,”
) 
RETURNS @table Table(ID varchar(100)) 
AS 
BEGIN 
 DECLARE @Index INT 
 SET @Index = 0 

 IF @String <> ‘‘
 Begin
  IF RIGHT(@String,1)<> @SplitChar 
  SET @String = @String + @SplitChar
  IF LEFT(@String,1)= @SplitChar 
  SET @String = STUFF(@String, 1, 1, ‘‘)
 End
 
 WHILE CHARINDEX(@SplitChar,@String,@Index) > 0 
 BEGIN 
  INSERT INTO @table(ID)
  VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String,
  @Index) - @Index))
  SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1 END 
RETURN 
END
GO

 

sqlserver几个好用的表值函数和标量函数

标签:

热心网友 时间:2022-04-08 05:55

有些情况可能用下表值函数,表值函数主要用于数据计算出来返回结果集,可以带参数(和视图的一个大的区别),如果函数中没有过多的逻辑处理,如变量的定义,判断等,
表值函数返回结果集可以简单向下面这么写:
复制代码
代码如下:
CREATE
FUNCTION
Fun_GetReportNews(@type
varchar(10))
RETURNS
TABLE
AS
RETURN
(

SELECT
TPR_ID,TPR_Title,TPR_Date
FROM
TP_ReportNews
WHERE
TPR_Type
=
@type
)
调用的时候就
SELECT
XX
FROM
Fun_GetReprotNews('xx')
如果函数中要定义变量,进行判断计算处理什么的,写法有点不一样了,要定义表变量才行,表值函数里是不允许创建临时表的,只能是表变量。
举个简单的写法样式,如下:
复制代码
代码如下:
CREATE
FUNCTION
FUN_GetInfoList(@type
varchar(10))
RETURNS
@Table
TABLE(TPR_ID
int,TPR_Title
nvarchar(100),TPR_PubDate
datetime)
AS
BEGIN

DECLARE
@a
varchar(10)

SELECT
@a
=
xx
FROM
XX
WHERE
xx
=
@type

INSERT
@Table
SELECT
XX,XX,XX
FROM
TableName
WHERE
XX
=
@a
--表变量里定义的列数和取值列数要一致
RETURN
END
如果进行多表操作,可以在函数体内定义表变量来存放结果集再进行关联查询。
标量值函数也贴一个样子好了,老掉牙的了,呵呵~~
复制代码
代码如下:
CREATE
FUNCTION
FUN_DataFormat
(@strDate
datetime)
RETURNS
varchar(20)
AS
BEGIN

declare
@date
varchar(20)

set
@date
=
DATENAME(YY,@strDate)+'年'+Convert(VARCHAR,MONTH(@strDate))+'月'+Convert(VARCHAR,DAY(@strDate))+'日'

return
@date
END
访问标量值函数时一般在函数名前加dbo,不然会被认为是系统内置函数,却因又不是系统内置函数而会报错。
上面的可以这么测试
select
dbo.FUN_DataFormat(getdate())
就忽悠这些了~~~~~~~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
笔记本wifi能够联网,但是台式机插网线网络很差 为什么这个wifi就针对一台电脑卡。 电脑连wifi看电视很卡台式电脑连接无线wifi特别卡 为什么本身台式网速特别快,可是用笔记本wifi的网速就特别慢呢... wifi很快电脑很慢是怎么回事电脑和手机连接同一个WiFi手机网速快但是... ...6个梨,要把这些梨全部放在盘子里,至少需要多少个盘子? 看图列算式,一共有多少个梨? 列式:__ 哪些原因会导致长白头发 头上白发特别多是体内缺什么呢还是病还是别的原因 ACL访问控制列表应用 无人机在大理洱海边飞行时非人为原因无故失联 自动返航却越飞越远... 大疆御mavic pro智能返航和一键返航的区别? djimini2自动返航高度是按照设定高度返航还是当时高度返航 冬天男人补什么最好,冬天男人可以补什么,男人冬天吃 男性冬季宜喝养生汤有哪些 男人冬天怎么补身体最好? 男士冬季喝什么茶叶比较好 家政服务包括哪些项目- 问一问 华为nova7pro屏幕多少钱 sql server中的标量值函数的问题 24小时无人售货机里面可不可以用现金支付?怎么找零?(成人用品) 一见钟情表白的话 无人售货机支付系统价异常什么原因? 有哪些有文艺气息的表白的话 文艺略古风的深情的表白句子有哪些? 表白的文艺句子。 如何文艺表白 徐州哪里有3m防尘口罩 有哪些关于管理会计的书籍值得现在看? 活性炭口罩哪里能买到? 福利彩票91期 从来不懂炒股的人学会炒股需要多长时间? 股票要多久才能学会? 社会上有多少种职业?最好能一一列举。 为摆脱经济危机,英国走什么路 学习股票需要几年 我想知道1991年公历8月9号出生的男狮子座的性格 91年属羊的和哪个属相在一起好 有释心两个字的微信个性签名? 天天象棋112关通关攻略 第112关怎么过 天天象棋第112关怎么过带图解法 天天象棋闯关模式112关怎么过 新版天天象棋的闯关模式楚汉争霸中的第112关怎么过 新版天天象棋第112关怎么通关 天天象棋112关怎么过 天天象棋112关怎么过? 新天天象棋残局112关怎么破? 天天象棋楚汉争霸112关怎么过视频 天天升级象棋112关怎么过视频解法 荷塘月色作者