怎么把下面的表记录
第一列 第二列
1 a,b,c
2 r,d
3 e,w
转变成下面的查询记录
第一列 第二列
1 a
2 b
3 c
4 r
5 d
...................
第一列 第二列
1 a,b,c
2 r,d
3 e,w
转变成下面的查询记录
第一列 第二列
1 a
2 b
3 c
4 r
5 d
...................
解决方案 »
- 继续散分,两道纠结的ALG题目,认为理论很强的过来看看
- Sql 语句,获取当月天数,以及本年天数
- 对于初学数据库者,Sqlserver,MySql,MSSql,哪个更合适?
- 一个除法的关系代数转换后的SQL语句,哪位能帮我解释一下吗?谢谢!!
- 求一SQL语句
- 加分
- 如何导入sql脚本文件?
- Excel导入数据到SQLserver,Excel中的9位数值变成科学计数法?
- 在公网中,配置sql server数据库镜像的问题
- 请大家帮下忙,我的SQLSERVER2005的配置管理器打不开,老是显示“无法连接到WMI提供程序。您没有权限或者该服务器无法访问...”
- 请问对时间建立索引到底对查询性能有沒有提高呢?我沒有试出来过。
- 如何在开发环境中获得存储过程的记录集?
INSERT A
SELECT 1,'中国;日本;韩国' UNION ALL
SELECT 2,'美国;意大利;法国' UNION ALL
SELECT 3,'德国'
SELECT * FROM A-- 建立一个辅助的临时表就可以了
SELECT TOP 8000 id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b
SELECT
A.ID,
COUNTRY = SUBSTRING(A.COUNTRY, B.ID, CHARINDEX(';', A.COUNTRY + ';', B.ID) - B.ID)
FROM A, # B
WHERE SUBSTRING(';' + a.COUNTRY, B.id, 1) = ';'
ORDER BY 1,2
GO
DROP TABLE A,#id country
----------- ----------------------------------------------------------------------------------------------------
1 中国;日本;韩国
2 美国;意大利;法国
3 德国(所影响的行数为 3 行)ID COUNTRY
----------- ----------------------------------------------------------------------------------------------------
1 韩国
1 日本
1 中国
2 法国
2 美国
2 意大利
3 德国(所影响的行数为 7 行)
declare @sql varchar(4000)
set @sql=''
select @sql=@sql+''' union all select '''+replace(col2, ',', ''' union all select ''') from T
select @sql=@sql+'''', @sql=right(@sql, len(@sql)-12)
exec(@sql)--result
----
a
b
c
r
d
e
w
insert T select 1, 'a,b,c'
union all select 2, 'r,d'
union all select 3, 'e,w'
游标也不是洪水猛兽啊!!游标里面用这个Splite函数create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(FldA varchar(100))
--实现split功能 的函数
--date :2005-4-20
--Author :Domino
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
select * from dbo..f_split(@OldContry,';')