数据表如下
id name
1 c;c++;java
2 python
希望通过SQL查询得到如下结果
id name
1 c
1 c++
1 java
2 python
望各位大拿不吝赐教,小弟不胜感激!
SQL code:
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb (id INT,col VARCHAR(30))
INSERT INTO tb VALUES (1,'aa,bb')
INSERT INTO tb VALUES (2,'aaa,bbb,ccc')
go
--1.2000/2005通用方法
SELECT
a.id,
col=SUBSTRING(a.col,number,CHARINDEX(',',a.col+',',number)-b.number)
from tb a
JOIN master..spt_values b
ON b.type='p'
--AND SUBSTRING(','+a.col,b.number,1)=',' --用此条件或下面的条件均可
AND CHARINDEX(',',','+a.col,number)=number
--2.2005以上新方法:
SELECT a.id,b.col
from (SELECT id,col=CAST('<v>'+REPLACE(col,',','</v><v>')+'</v>' AS xml) from tb) a
OUTER APPLY (SELECT col=T.C.value('.','varchar(50)') from a.col.nodes('/v') AS T(C)) b
--sql 2000
SQL code:
create table tb(id int,name varchar(10))
insert into tb values(1, 'c;c++;java')
insert into tb values(2, 'python')
go
SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # from syscolumns a, syscolumns b
SELECT A.id, name = SUBSTRING(A.[name], B.i
可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......
现在有两张表:文章主表A(articleId,articleTitle),文章评论表B(commentId,articleId,commentTitle)
现在我想实现这样的功能:列出文章列表,其中每篇文章标题下面列出此文章的前2个文章评论,请问sql语句怎么写啊 ......