SQL表变量截取字符串内容与字符串内容根据符号进行拆分

方法一  表变量

DECLARE @#sou TABLE (s NVARCHAR(100),y NVARCHAR(100),x DATETIME)
INSERT INTO @#sou 
----Name,Temp为字符串内容标签名---
SELECT 
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=0)) WHERE [Key]='Name') AS s,
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=0)) WHERE [Key]='Temp') AS y,
CreateTime AS x FROM 表名
WHERE IP='IP'AND TempList<>''
UNION all
SELECT 
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=1)) WHERE [Key]='Name') AS s,
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=1)) WHERE [Key]='Temp') AS y,
CreateTime AS x FROM  表名 
WHERE IP='ip'AND TempList<>''
UNION all
SELECT 
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=2)) WHERE [Key]='Name') AS s,
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=2)) WHERE [Key]='Temp') AS y,
CreateTime AS x FROM  表名
WHERE IP='ip'AND TempList<>''
UNION all
SELECT 
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=3)) WHERE [Key]='Name') AS s,
(SELECT Value FROM OPENJSON((SELECT Value FROM  OPENJSON(TempList) WHERE [Key]=4)) WHERE [Key]='Temp') AS y,
CreateTime AS x FROM  表名
WHERE IP='ip'AND TempList<>''

SELECT * FROM @#sou

方法二

1、定义方法

CREATE FUNCTION f_splitstr(@SoureeSql NVARCHAR(MAX),@StrSeprate NVARCHAR(100))
RETURNS @temp TABLE(F1 NVARCHAR(100))
AS 
BEGIN
DECLARE @ch AS NVARCHAR(100)

SET @SoureeSql=@SoureeSql+@StrSeprate
  WHILE(@SoureeSql<>'')
  BEGIN
  SET @ch=LEFT(@SoureeSql,CHARINDEX(',',@SoureeSql,1)-1)
  INSERT @temp VALUES(@ch)
  SET @SoureeSql=STUFF(@SoureeSql,1,CHARINDEX(',',@SoureeSql,1),'')
  END
  RETURN
END

2、调用方法

DECLARE @TempList AS NVARCHAR(MAX)

SET @TempList=(    SELECT TOP 1 
    --ToolInfoS--刀具
    --MainAxisList--主轴
    --ServiceList   --伺服
    TempList--温度

    FROM dbo.MKDHistoryStatus
    WHERE   IP='10.0.142.107' 
    AND  CreateTime BETWEEN '2023-01-01' AND '2023-01-05'
    ORDER BY CreateTime ASC
)

SELECT * FROM dbo.f_splitstr(@TempList,',')
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值