㈠ sql2005 for xml path怎麼去除重復值
1
2
3
4
delete from 表 where message not in
(select <a href="https://www..com/s?wd=min&tn=44039180_cpr&fenlei=-yw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">min</a>(message)
from 表 group by dateTime,uid ,homeID )
--刪除不是最小的信息 按每天分組
㈡ SQL資料庫,用for xml path字元串拼接,拼接內容如何排序
SELECTb.列1,LEFT(List,LEN(List)-1)asNumFROM(
SELECT列1,
(SELECT列2+','FROM表
WHERE列1=a.列1
FORXMLPATH(''))ASList
FROM表a
GROUPBY列1
)b
㈢ sql server 2000中如何使用xml for path來進行字元串拼接
sql
server
2000不支持xml
for
path。可以用另一個方法代替:
declare
@s
varchar(8000)
set
@s
=
''
select
@s
=
@s
+
欄位
+
','
from
tablename
where
...
set
@s
=
stuff(@s,len(@s),1,'')
變數@s的值就是串聯的字元串。
㈣ 急:mysql怎麼實現sqlserver中for xml path
mysql中有group_concat()可以合並多行內容
select AID,ANAME,(
select group_concat(VALUE) from B where B.AID=A.AID
) as AVALUE from A;
㈤ SQL怎麼提取欄位中最大值
1、既然被for xml path('')組合到一起了,那就想辦法把這個字元串拆開;
2、可以創建一個Split這樣的函數,來拆開這一列為一個表的形式;
3、然後,再查出這個表裡的最大值即可
下面是Ufn_Split函數
createfunction[dbo].[Ufn_Split](@Arrayvarchar(max),@StrSepratevarchar(10))
returns@TokenValstable(fjj_idINTIDENTITY(1,1),strValuevarchar(255))
as
begin
declare@strlenint,@curposint,@valvarchar(255),@nextcommaint
set@strlen=datalength(@Array)
set@curpos=0
while@curpos<=@strlen
begin
set@nextcomma=charindex(@StrSeprate,@Array,@curpos)
if@nextcomma=0
set@nextcomma=@strlen+1
set@val=substring(@Array,@curpos,@nextcomma-@curpos)
insert@TokenValsvalues(rtrim(ltrim(@val)))
set@curpos=@nextcomma+1
end
return
end
函數使用方法:
select*fromdbo.Ufn_Split('1+2+3+5+1','+')table1
㈥ 求助sqlsever for xml path 方法
一、FOR XML PATH 基本運用
[sql] view plain
select teacher,object from teach
利用for xml path後:
[sql] view plain
select teacher,object from teach for xml path
二、改變XML行節點的名稱
a、根節點默認是<row></row>,我們可以通過path後面的參數改變根節點名稱:
[html] view plain
select teacher,object from teach for xml path('記錄'
㈦ 資料庫中,如何用SQL語句實現將某欄位下的所有記錄合成一條記錄,用逗號隔開
MS Sqlserver(for xml path的巧用):
select'T1'M,stuff((select','+CAST(T1asvarchar)fromTable_1forxmlpath('')),1,1,'')N
union
select'T2'M,stuff((select','+CAST(T2asvarchar)fromTable_2forxmlpath('')),1,1,'')N
Oracle(自帶這樣的函數):
selectwm_concat(T1)NfromTable_1;--10g寫法
selectlistagg(T1,',')withingroup(orderbyT1)NfromTable_1;--11g寫法
㈧ sql語句 問題如圖 求講解
一種方式是用自定義函數,像xtwwz寫的那樣。但有個缺點,就是數據量大的時候速度比較慢。
另一個思路是使用forxmlpath,僅適用於SQLserver2005及以上版本。
--測試數據
with
t1(code)as(
select'1'unionall
select'1,2'unionall
select'1,2,3'unionall
select'4'),
t2(code,name)as(
select'1','A'unionall
select'2','B'unionall
select'3','C'unionall
select'4','D')
--用charindex和forxmlpath實現批量替換的功能
selectstuff((
select','+t2.namefromt2
wherecharindex(','+t2.code+',',','+t1.code+',')>0
orderbyt2.code
forxmlpath('')
),1,1,'')namefromt1
結果如下: