sqlserver 实现字符串 开始位置 结束位置 截取

这个博客分享了一个SQL用户定义函数,用于从包含时间描述的字符串中提取并转换成秒数。该函数适用于简单的字符串格式,例如'199天4小时19分0秒'。通过指定前缀和后缀,可以提取中间的时间值。

实现目的:'199天4小时19分0秒';  转 INT 类型的秒        只适用于简单字符串截取 如果有更复杂的源字符串 须慎用

USE [Mobje_Data]
GO
/****** Object:  UserDefinedFunction [dbo].[func_FindText]    Script Date: 2021/1/24 9:31:52  ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[func_FindText](@qianzi_Str VARCHAR(200),@houzui_Str VARCHAR(200),@Str varchar(8000)) 
 RETURNS VARCHAR(50)    
 
as
BEGIN
	declare @result_str VARCHAR(200) 

	--DECLARE @str VARCHAR(50) = '99天4小时19分0秒'; 
 
 
--DECLARE @qianzi_Str VARCHAR(50) ='分' 
--DECLARE @houzui_Str VARCHAR(50)  ='秒'

DECLARE @startStrIndex INT --起始位置  前缀+前缀的长度    99的前缀 是0  

DECLARE @endStrIndex INT --结束字符串位置   

SELECT @startStrIndex=CHARINDEX(@qianzi_Str,@str)+LEN(@qianzi_Str);

SELECT @endStrIndex=CHARINDEX(@houzui_Str,@str) 


SELECT @result_str= SUBSTRING(@str, @startStrIndex, @endStrIndex - @startStrIndex); 
	 
  
	 
  RETURN  @result_str
END

SELECT dbo.func_FindText('', '天', '199天4小时19分0秒');
SELECT dbo.func_FindText('天', '小时', '199天4小时19分0秒');
SELECT dbo.func_FindText('小时', '分', '199天4小时19分0秒');
SELECT dbo.func_FindText('分', '秒', '199天4小时19分0秒');

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值