以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于SQL语句中stuff的用法 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143535) |
-- 作者:ap9709130 -- 发布时间:2019/11/27 22:06:00 -- 关于SQL语句中stuff的用法 老师 我的表结构如下: 表名 a dw (列名) 备注列 34,56 78,88 SQL 语句 se lec t stuff((s el ec t \',\' +CAST(dw as varchar) from {a} Order by _Identify For xml path(\'\')),1,1,\'\')) as dw1 from {a} 得到结果: 34,56,78,88 这个结果正好是我想要的 另外一个表b 的_Identify的值 我想要得到 s ele ct 价格 from {b} where _Identify in (34,56,78,88) 要怎么才能用上第一个语句的结果,来得到 s el e ct 价格 from {b} where _Identify in (34,56,78,88) ? |
-- 作者:有点蓝 -- 发布时间:2019/11/27 22:28:00 -- 恰恰相反,这种情况不能使用合并,而是拆分 with roy as (select [dw]=cast(left([dw],charindex(\',\',[dw]+\',\')-1) as nvarchar(100)),Split=cast(stuff([dw]+\',\',1,charindex(\',\',[dw]+\',\'),\'\') as nvarchar(100)) from [表A] union all select [dw]=cast(left(Split,charindex(\',\',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(\',\',Split),\'\') as nvarchar(100)) from Roy where split>\'\' ) select * from [表B] where [_Identify] in (select [dw] from roy ) option (MAXRECURSION 0) |