一道SQL算法


/********************************
select * from A;
ID YS
-------------------------
01 A
02 AB
03 CAB
04 ABCD
select * from B;
DM YS
-------------------------
A 白
B 黑
C 红
D 蓝

想得到结果:
-------------------------
01 白
02 白黑
03 红白黑
04 白黑红蓝
************************************/


CREATE TABLE A (ID VARCHAR(2),YS VARCHAR(5));

INSERT INTO A VALUES ('01','A');
INSERT INTO A VALUES ('02','AB');
INSERT INTO A VALUES ('03','CAB');
INSERT INTO A VALUES ('04','ABCD');

CREATE TABLE B (DM VARCHAR(1),YS VARCHAR(2));
INSERT INTO B VALUES ('A','白');
INSERT INTO B VALUES ('B','黑');
INSERT INTO B VALUES ('C','红');
INSERT INTO B VALUES ('D','蓝');

select * from a

select * from b

---使用游标
DECLARE @ID VARCHAR(2)
DECLARE @YS VARCHAR(5)
DECLARE @i INT
DECLARE @B_TMP VARCHAR(5)
DECLARE @A_COLOR VARCHAR(15)
DECLARE myCursor CURSOR

FOR
SELECT * FROM A
OPEN myCursor
FETCH NEXT FROM myCursor INTO @ID,@YS

WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @i=1
SET @B_TMP=''
SET @A_COLOR=''
WHILE @i<=LEN(@YS)
BEGIN
SELECT @B_TMP=YS FROM B WHERE DM=SUBSTRING(@YS,@i,1)
SET @A_COLOR=@A_COLOR+@B_TMP
SET @i=@i+1
END
PRINT @ID+' '+@A_COLOR
FETCH NEXT FROM myCursor INTO @ID,@YS
END

CLOSE myCursor
DEALLOCATE myCursor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值