惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
Docker
H
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
C
Check Point Blog
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
M
MIT News - Artificial intelligence
B
Blog RSS Feed
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
美团技术团队
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale

博客园 - 禹过天晴

TextControl技术互助 博文阅读密码验证 - 博客园 (转)不通过web.config在运行时注册httpmodules (学)如何在Oracle中一次执行多条sql语句 (学)条件性唯一性索引的建议 阿里云服务器IIS启用HTTPS协议(转) (学)递归查找窗体中全部控件 (原)用WebBrowser浏览Office Web Apps Server,除去“下载”按钮 博文阅读密码验证 - 博客园 如何让Oracle表及字段显示为区分大小写(转) 博文阅读密码验证 - 博客园 (转)基于SQL的EAN13、ENA8条形码校验位生成 博文阅读密码验证 - 博客园 (原)将Oracle迁移到SQLServer (转)Sql Server 快速查看表结构(表描述及字段说明) 博文阅读密码验证 - 博客园 (转)SQL查询案例:多行转换为一行 (转)找回vss超级管理员密码 (转)SqlServer里DateTime转字符串
(转)SQL Server 列转行
禹过天晴 · 2017-09-06 · via 博客园 - 禹过天晴

原文:http://www.myexception.cn/sql-server/1078985.html
1,2,3,4,5
以上是一个字符串或则一逗号分隔的数字。

这里希望用一条语句查询出这样的效果:

1
2
3
4
5


不知道怎样才能实现
------解决方案--------------------
create function [dbo].[f_Split]
 (
 @SourceSql nvarchar(max),--源分隔字符串
 @StrSeprate varchar(10)--分隔符
 )
 returns @temp table(a nvarchar (max))
 as 
begin
     declare @i int
     set @SourceSql=rtrim(ltrim(@SourceSql))
     set @i=charindex(@StrSeprate,@SourceSql)
     while @i>=1
     begin
         insert @temp values(left(@SourceSql,@i-1))
         set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
         set @i=charindex(@StrSeprate,@SourceSql)
     end
     if @SourceSql<>'\'
        insert @temp values(@SourceSql)
     return 
end
go
select * from f_Split('1,2,3,4,5',',')
------解决方案--------------------
declare @str varchar(20)
set @str='1,2,3,4,5'
set @str=@str+','
while charindex(',',@str)>0
begin
  select substring(@str,1,charindex(',',@str)-1)
  set @str=substring(@str,charindex(',',@str)+1,len(@str))
end
------解决方案--------------------

CREATE TABLE T1(F1 VARCHAR(20))
INSERT INTO T1 VALUES('1,2,3,4,5')
SELECT x.T.value('.','varchar(10)') AS ID
FROM (SELECT CONVERT(XML,'<T>' + REPLACE(F1,',','</T><T>')+'</T>') AS K FROM T1) A
CROSS APPLY K.nodes('T') x(T)
-------- ID ---------- 1 2 3 4 5 (5 行受影响)------解决方案--------------------
--cardbase
if object_id('cardbase','u') is not null
drop table cardbase
create table cardbase
(
[str] nvarchar(20)
)
go
--SQL declare @length int declare @start int declare @str nvarchar(20) set @str='1,2,3,4,5' set @length=LEN(@str) set @start=1 while(@start<=@length)
begin     insert into cardbase select SUBSTRING(@str,@start,1)
set @start=@start+2
end
select *From cardbase
--结果集
/*
1 2 3 4
5 */