有這么一個(gè)表 create table tb(id int , value varchar ( 10 )) insert into tb values ( 1 , ' aa ' ) insert into tb values ( 1 , ' bb ' ) insert into tb values ( 2 , ' aaa ' ) insert into tb values ( 2 , ' bbb ' ) insert into tb values ( 2 , '
有這么一個(gè)表?
<span>create</span> <span>table</span> tb(id <span>int</span>, value <span>varchar</span>(<span>10</span><span>)) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>1</span>, <span>'</span><span>aa</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>1</span>, <span>'</span><span>bb</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>2</span>, <span>'</span><span>aaa</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>2</span>, <span>'</span><span>bbb</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>2</span>, <span>'</span><span>ccc</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>3</span>, <span>'</span><span>ddd</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>3</span>, <span>'</span><span>fff</span><span>'</span>)
?
需求:把id為3所以數(shù)據(jù)轉(zhuǎn)為1行。以|分隔
?
1.把id為3的數(shù)據(jù)轉(zhuǎn) ?xml
?
xml
?
select '|'+(value) from tb
where id=3
for xml path('')
效果
?
?
?
2. 去掉第一個(gè) ?| 替換成空格 ?
?
需要函數(shù) Stuff,, ? 類似對(duì)字符串操作這樣的函數(shù)還有 replace() right () left() substring() 看需求使用
?
STUFF?函數(shù)將字符串插入另一字符串。它在第一個(gè)字符串中從開(kāi)始位置刪除指定長(zhǎng)度的字符;然后將第二個(gè)字符串插入第一個(gè)字符串的開(kāi)始位置。
?Transact-SQL 語(yǔ)法約定
@@######@@ |
?
stuff((select '|'+(value) from tb
where id=3
for xml path('')),1,1,'') ?
這句無(wú)法單獨(dú)運(yùn)行
?
3.最終實(shí)現(xiàn)
?
<span>STUFF</span> <strong>(</strong> <em>character_expression </em><strong>, </strong><em>start </em><strong>, </strong><em>length </em><strong>,</strong><em>character_expression </em><strong>)</strong>
ps:去掉一個(gè)where 得到的結(jié)果是不一樣的,不懂為何。group by id 有去重的效果
?
效果圖。沒(méi)有------------
在oracle 數(shù)據(jù)庫(kù)中他也有自己的實(shí)現(xiàn)。覺(jué)得這些東西沒(méi)有什么的。只要你有需求,必然有答案,只是你接觸了沒(méi)有而已。反正現(xiàn)在編程我們都是站在巨人的肩膀上了。
?
<span>select</span> id ,value<span>=</span><span>stuff</span>((<span>select</span> <span>'</span><span>|</span><span>'</span><span>+</span>(value) <span>from</span><span> tb </span><span>where</span> id<span>=</span><span>3</span> <span>for</span> xml path(<span>''</span>)),<span>1</span>,<span>1</span>,<span>''</span>) <span>from</span> tb <span>where</span> id<span>=</span><span>3</span> <span>group</span> <span>by</span> id
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)