我想把一段字符或者是数字拆分成一列,有这种函数没有

封尘-莫若 2019-03-06 12:42:11
比如说20190306
拆分成
2
0
1
9
0
3
0
6
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
封尘-莫若 2019-03-06
  • 打赏
  • 举报
回复
引用 6 楼 Dear SQL 的回复:
[quote=引用 5 楼 LXYWXWJQ 的回复:]
[quote=引用 3 楼 Dear SQL 的回复:]
declare @str nvarchar(50)='20190306'

select SUBSTRING(@str,number+1,1) AS code
from master..spt_values
where number<len(@str) and type='P'

/*

code
----
2
0
1
9
0
3
0
6

(8 行受影响)


*/


这个在orcale里边能这么用嘛[/quote]
oracle 中要用select * from dual connect by rownum<=8[/quote]

好的谢谢
Dear SQL(燊) 2019-03-06
  • 打赏
  • 举报
回复
引用 5 楼 LXYWXWJQ 的回复:
[quote=引用 3 楼 Dear SQL 的回复:]
declare @str nvarchar(50)='20190306'

select SUBSTRING(@str,number+1,1) AS code
from master..spt_values
where number<len(@str) and type='P'

/*

code
----
2
0
1
9
0
3
0
6

(8 行受影响)


*/
这个在orcale里边能这么用嘛[/quote] oracle 中要用select * from dual connect by rownum<=8
封尘-莫若 2019-03-06
  • 打赏
  • 举报
回复
引用 3 楼 Dear SQL 的回复:
declare @str nvarchar(50)='20190306'

select SUBSTRING(@str,number+1,1) AS code
from master..spt_values
where number<len(@str) and type='P'

/*

code
----
2
0
1
9
0
3
0
6

(8 行受影响)


*/


这个在orcale里边能这么用嘛
封尘-莫若 2019-03-06
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
新建函数:
CREATE FUNCTION [dbo].Fn_GetStrTab (@str VARCHAR(100))
RETURNS @t TABLE (col NVARCHAR(200))
AS
BEGIN
DECLARE @strlen INT;
SELECT @strlen = LEN(@str);
WHILE @strlen > 0
BEGIN
INSERT INTO @t
(
col
)
VALUES (SUBSTRING(@str, 1, 1));
SET @str= STUFF(@str,1,1,'')
SET @strlen = LEN(@str);
END;
RETURN;
END;


--使用测试

SELECT * FROM dbo.Fn_GetStrTab(20190306)




好的,假如是多组数据这个该怎么使用啊,
我用着为啥一直提示我无法绑定由多个部分组成的标识符
Dear SQL(燊) 2019-03-06
  • 打赏
  • 举报
回复
declare @str nvarchar(50)='20190306'

select SUBSTRING(@str,number+1,1) AS code
from master..spt_values
where number<len(@str) and type='P'

/*

code
----
2
0
1
9
0
3
0
6

(8 行受影响)


*/
二月十六 2019-03-06
  • 打赏
  • 举报
回复
新建函数:
CREATE FUNCTION [dbo].Fn_GetStrTab (@str VARCHAR(100))
RETURNS @t TABLE (col NVARCHAR(200))
AS
BEGIN
DECLARE @strlen INT;
SELECT @strlen = LEN(@str);
WHILE @strlen > 0
BEGIN
INSERT INTO @t
(
col
)
VALUES (SUBSTRING(@str, 1, 1));
SET @str= STUFF(@str,1,1,'')
SET @strlen = LEN(@str);
END;
RETURN;
END;


--使用测试

SELECT * FROM dbo.Fn_GetStrTab(20190306)


卖水果的net 2019-03-06
  • 打赏
  • 举报
回复
master..spt_values 配合 substr 函数。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧