遍历列表,把每一行值用STRING保存,然后用SPLIT(‘,’)切分,把字符存入一个字符数组中。
定义一个整形i,用来存数量,用IF判断是否有A在,有就让i+1.
最后i就是你要的了。
以上只是思路。代码也很好实现的。
数据库是什么数据库?
SQL Server 2005 以上版本的话, 倒是没有问题的...
直接一条语句就可以处理了。
-- 测试表 和测试数据。CREATE TABLE #A (
Id INT,
Value varchar(6)
)
GO
INSERT INTO #A VALUES(1, '2')
INSERT INTO #A VALUES(2, '4')
INSERT INTO #A VALUES(3, '51')
INSERT INTO #A VALUES(4, '2')
INSERT INTO #A VALUES(5, '20')
GO
CREATE TABLE #B (
Id INT,
Value VARCHAR(10)
)
GO
INSERT INTO #B VALUES(1, '1')
INSERT INTO #B VALUES(2, '2,3')
INSERT INTO #B VALUES(3, '4,5')
INSERT INTO #B VALUES(4, '1,2,3')
GO
-- 一条 查询的 sql 语句。
SELECT
id,
cast(
STUFF(
(
SELECT
',' + a.value
FROM
#a a
WHERE
CHARINDEX( ',' + RTRIM(cast(a.id as char)) + ',', ',' + b.Value + ',' ) > 0
FOR XML PATH('')
), 1, 1, '')
as varchar(10)) AS Value
FROM
#b b
GO
-- 查询的结果如下:
id Value
----------- ----------
1 2
2 4,51
3 2,20
4 2,4,51
(4 行受影响)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)