在工作中難免會遇到資料庫中資料要進行拼接的問題,字串拼接可以是用sql的拼接也可以使用c#的拼接,本次說的是使用sql進行拼接。
首先插入測試語句:
--查詢結果如下:測試語句,準備建立表的語句:如下
create
table
dbo.test3
( id
intidentity(1,1) not
null
primary
keynonclustered
, typeid
nvarchar(50) null
, typename
nvarchar(50) null
);create
unique
clustered
index
idx3_id
ondbo.test3(id);
--插入測試資料
insert
into dbo.test3(typeid,typename) values('
s1', '一班'
);insert
into dbo.test3(typeid,typename) values('
s1', '二班'
);insert
into dbo.test3(typeid,typename) values('
s1', '三班'
);insert
into dbo.test3(typeid,typename) values('
s2', '一班'
);insert
into dbo.test3(typeid,typename) values('
s2', '二班'
);insert
into dbo.test3(typeid,typename) values('
s3', '三班'
);insert
into dbo.test3(typeid,typename) values('
s3', '四班'
);insert
into dbo.test3(typeid,typename) values('
s3', '五班'
);insert
into dbo.test3(typeid,typename) values('
s3', '六班'
);insert
into dbo.test3(typeid,typename) values('
s4', '一班'
);insert
into dbo.test3(typeid,typename) values('
s4', '
二班');
比如,現在的需求是,我想知道每個階段(s1為第一階段)有哪些班級,上圖肯定有點亂,如果能每一階段顯示一條資料就好了。
select b.typeid,left(b.list,len(b.list)-執行結果如下:1) from (select typeid,(select typename+',
'from
test3
where a.typeid=typeid--
比對條件,如果缺少則每條都相同
for xml path('')) as
list
from
test3 a
group
bytypeid
)b
至此,就看出,使用sql for xml path很簡單就能拼接出想要的結果來,何樂而不為呢。
SQL 拼接字串
寫sql的時候有時候用到需要拼接多個字段或者在查詢出結果的字段裡加入一部分固定的字串。方法一 在查詢到的結果後,用 去拼接。這種方法就不在贅述。方法二 使用資料庫提供的方法concat a,b oracle 中concat a,b 只能有兩個引數,如果concat中連線的值不是字串,那麼oracle...
sql字串拼接
oracle 使用 或者concat sql select aaa bbb from dual aaa bbb aaabbb sql select concat aaa ccc from dual concat aaa aaaccc mysql中,使用 如果字串全是數字則轉化為數字,否則轉換為0,也...
sql字串拼接
在sql語句中經常需要進行字串拼接,以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。sqlserver select 123 456 oracle select 123 456 from dual 或select concat 123 456 from du...