¸÷λ¸ßÊÖ£º×Éѯ¸ösqlÓï¾ä£ºÓиö±íÖУ¬Ò»¸ö×Ö¶ÎÀïÃæ×°ÓÐÕâЩÄÚÈÝ£¬
×Ö¶ÎÃû£º sumall
×Ö¶ÎÄÚÈÝ£º [»ã×Ü1001:30,1002:10,3001:15,4010:100,5006:1,6021:1000]
ÎÒÏë²ð·ÖΪ£º
mx sl
1001 30
1002 10
3001 15
4010 100
5006 1
6021 1000
ÕâÑùµÄsqlÔõôд£¿
×Ö¶ÎÄÚÈÝÖаüº¬µÄÓÐÖÐÀ¨ºÅµÄ [] Ò²ÊÇ×Ö¶ÎÄÚÈݵÄÒ»²¿·Ö
SQL code:
declare @t table(sumall nvarchar(200))
insert @t select N'[»ã×Ü1001:30,1002:10,3001:15,4010:100,5006:1,6021:1000]'
;with sql_sf
as
(SELECT
sumall=SUBSTRING(replace(replace(a.sumall,N'[»ã×Ü',''),']',''),number,CHARINDEX(',',a.sumall+',',number)-b.number)
from @t a
JOIN master..spt_values b
ON b.type='p'
AND CHARINDEX(',',','+a.sumall,number)=number)
select left(sumall,charindex(':',sumall)-1)mx,
right(sumall,len(sumall)-charindex(':',sumall))sl
from sql_sf
SQL code:
CREATE FUNCTION f_splitSTR(
@s varchar(8000), --´ý·Ö²ðµÄ×Ö·û´®
@split varchar(10) --Êý¾Ý·Ö¸ô·û
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen=LEN(@split+'a')-2
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@spli
ÏÖÔÚÓÐÒ»¸ö²¿Ãűídept£¨²¿ÃÅÃû³Æ£¬²¿Ãźš£¡££©ÓÐÒ»¸öÈËÔ±±íemp£¨ÐÕÃû£¬ÈËÔ±±àºÅ£¬Ö°Î»£¬Ð½×Ê£¬²¿ÃÅ£©
emp±íÖеÄÄÚÈÝÊÇÕâÑùµÄ£º
a 1 ¹¤³Ìʦ 3000 Èí¼þ²¿
b 2 ÆÕͨԱ¹¤ 2000 Ó²¼þ²¿
c 3 ¹¤³Ìʦ 4000 Ó²¼þ²¿
d ......