今天一朋友问这样的问题:
如:
一张表中有一列数据为
40秒
1分30秒
3小时45分29秒
现在上面的几行转换成可统计的数据,为了统计方便可以都转换成秒。
解决方法如下:
GO
CREATE FUNCTION StringToSecond(@string nvarchar(100))
RETURNS int
BEGIN
DECLARE @Return int
DECLARE @i int
SET @i=CHARINDEX('小时',@string)
SET @Return=0
IF @i>=1
SELECT @Return=LEFT(@string,@i-1)*60*60,@string=RIGHT(@string,LEN(@string)-@i-1)
SET @i=CHARINDEX('分',@string)
IF @i>=1
SELECT @Return=@Return+LEFT(@string,@i-1)*60,@string=RIGHT(@string,LEN(@string)-@i)
SET @i=CHARINDEX('秒',@string)
IF @i>=1
SELECT @Return=@Return+LEFT(@string,@i-1),@string=RIGHT(@string,@i)
RETURN @Return
END
GO
declare @d nvarchar(30)
SET @d='3小时45分29秒'
SELECT dbo.StringToSecond(@d)
SET @d='1分30秒'
SELECT dbo.StringToSecond(@d)
SET @d='40秒'
SELECT dbo.StringToSecond(@d)
GO
DROP FUNCTION StringToSecond