Jef*_*eff 4 t-sql sql-server user-defined-functions
有人决定将多次拼凑成一个列,因此列值可能如下所示:
08:00 AM01:00 PM
Run Code Online (Sandbox Code Playgroud)
另一列包含以下格式的日期;
20070906
Run Code Online (Sandbox Code Playgroud)
我想编写一个UDF来在单个SQL查询中规范化这个数据,所以我可以为上面的例子找回2行的datetime类型
2007-09-06 08:00:00.000
2007-09-06 13:00:00.000
Run Code Online (Sandbox Code Playgroud)
转换为datetime类型很简单...但我需要每8个字符拆分时间部分以获得个人超时.
有人知道现有的UDF要做到这一点吗?
谢谢.
试试这个,它会将你的字符串拆分成指定lenth的块:
create function SplitString
(
@str varchar(max),
@length int
)
returns @Results table( Result varchar(50) )
AS
begin
declare @s varchar(50)
while len(@str) > 0
begin
set @s = left(@str, @length)
set @str = right(@str, len(@str) - @length)
insert @Results values (@s)
end
return
end
Run Code Online (Sandbox Code Playgroud)
例如:
select * from dbo.SplitString('08:00 AM01:00 PM', 8)
Run Code Online (Sandbox Code Playgroud)
会给出这个结果:
结果
上午08:00
下午01:00