¸÷λ¸ßÊÖ£º×Éѯ¸ö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
¿ÉÄÜÒòΪ¹¤×÷µÄÔÒò ½Ó´¥Êý¾Ý¿âÕâ¿é±È½ÏÉÙ£¬Ö®Ç°¶¼ÊÇ×ö³ÌÐòÕâ¿é£¬Êý¾Ý¿âÕâ¿é¶¼ÓÐרÃŵÄÈËÀ´×ö ·Ö¹¤¶¼ºÜÃ÷ϸ ËùÒÔ¶ÔÊý¾Ý¿âÕâÒ»¿éÍêÈ«²»Á˽⡣ǰ¶Îʱ¼ä È¥ÃæÊÔÁ˼¸¼Ò¹«Ë¾ ¼¸ºõ¶¼ÊÇÔÚÊý¾Ý¿âÕâ¿é¹ÒµôµÄ Á¬¸ö¼òµ¥µÄSQ ......