TSQL:如何将变量和文本一次插入到单个字段中
我有以下代码来更新MIITEM中的记录,这很好,但是如何动态使用另一个名为[WI]的表中的数据呢TSQL:如何将变量和文本一次插入到单个字段中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有以下代码来更新MIITEM中的记录,这很好,但是如何动态使用另一个名为[WI]的表中的数据呢 use DB1; Go update MIITEM set [fldXml]= '<fields> <field5>USE DISC:300230 FORMED OD:13.48 BH SPEC:8/8/6.003, BH Size: 0.656, C/S Spec: 90/0.843/CONICAL 2</field5> <field6>1 - CL
use DB1;
Go
update MIITEM
set [fldXml]= '<fields>
<field5>USE DISC:300230 FORMED OD:13.48 BH SPEC:8/8/6.003, BH Size: 0.656, C/S Spec: 90/0.843/CONICAL 2</field5>
<field6>1 - CL THRU PLATE-V/S HOLE SIZE:5/8"Z1 V:0.125 L:0.125 COLOR:100270 AGC REVERSE DISC</field6>
<field7>N/A</field7>
</fields>'
where [itemId]='500201'
使用DB1;
去
更新项目
设置[fldXml]='
使用阀瓣:300230成型外径:13.48 BH规格:8/8/6.003,BH尺寸:0.656,C/S规格:90/0.843/2
1-CL贯穿板V/S孔尺寸:5/8“Z1 V:0.125 L:0.125颜色:100270 AGC反转盘
不适用
'
其中[itemId]=“500201”
下面是源表中的数据
下面是应用程序中的数据
这是MIITEM或Destination表中的记录
我想用[wi]表中[wi].[DISC_NOTE]字段中的值动态替换文本USE DISC:300230 FORMED OD:13.48 BH SPEC:8/8/6.003,BH Size:0.656,C/S SPEC:90/0.843/con锥形2
use DB1;
Go
update MIITEM
set [fldXml]= '<fields>
<field5>USE DISC:300230 FORMED OD:13.48 BH SPEC:8/8/6.003, BH Size: 0.656, C/S Spec: 90/0.843/CONICAL 2</field5>
<field6>1 - CL THRU PLATE-V/S HOLE SIZE:5/8"Z1 V:0.125 L:0.125 COLOR:100270 AGC REVERSE DISC</field6>
<field7>N/A</field7>
</fields>'
where [itemId]='500201'
我想用[wi].[WHEEL_NOTE]字段值动态替换1-CL贯穿板-V/S孔尺寸:5/8“Z1 V:0.125 L:0.125颜色:100270 AGC反转盘
use DB1;
Go
update MIITEM
set [fldXml]= '<fields>
<field5>USE DISC:300230 FORMED OD:13.48 BH SPEC:8/8/6.003, BH Size: 0.656, C/S Spec: 90/0.843/CONICAL 2</field5>
<field6>1 - CL THRU PLATE-V/S HOLE SIZE:5/8"Z1 V:0.125 L:0.125 COLOR:100270 AGC REVERSE DISC</field6>
<field7>N/A</field7>
</fields>'
where [itemId]='500201'
我想从[wi]表中替换[wi].[ASSEMBLY\u NOTE]字段。动态地在字段之间穿行
use DB1;
Go
update MIITEM
set [fldXml]= '<fields>
<field5>USE DISC:300230 FORMED OD:13.48 BH SPEC:8/8/6.003, BH Size: 0.656, C/S Spec: 90/0.843/CONICAL 2</field5>
<field6>1 - CL THRU PLATE-V/S HOLE SIZE:5/8"Z1 V:0.125 L:0.125 COLOR:100270 AGC REVERSE DISC</field6>
<field7>N/A</field7>
</fields>'
where [itemId]='500201'
为此,可以使用TSQL XML DML(假设
fldXml
是XML
数据类型)。查询如下所示
update MIITEM
set [fldXml].modify('replace value of (fields/field5)[1]
with sql:column("DISC_NOTE")')
from MIITEM m
inner join wi on m.idemid=wi.stock_id
--where m.idemid='500201' --if you need it
请注意,您必须运行update
trice(分别针对每个字段5、字段6和字段7),因为XML DML不允许多节点更新
更新
如果fldXml
是一个字符串,则需要比较构建整个字符串的开销
fldXml='<fields><field5>'+wi.disc_note+...
然后根据初始答案为每个节点更新几次@MIITEM
,最后
update MIITEM
set [fldXml]=x.fldXml
from MIITEM t
inner join @MIITEM x on t.itemid = x.itemid
为此,可以使用TSQL XML DML(假设
fldXml
是XML
数据类型)。查询如下所示
update MIITEM
set [fldXml].modify('replace value of (fields/field5)[1]
with sql:column("DISC_NOTE")')
from MIITEM m
inner join wi on m.idemid=wi.stock_id
--where m.idemid='500201' --if you need it
请注意,您必须运行update
trice(分别针对每个字段5、字段6和字段7),因为XML DML不允许多节点更新
更新
如果fldXml
是一个字符串,则需要比较构建整个字符串的开销
fldXml='<fields><field5>'+wi.disc_note+...
然后根据初始答案为每个节点更新几次@MIITEM
,最后
update MIITEM
set [fldXml]=x.fldXml
from MIITEM t
inner join @MIITEM x on t.itemid = x.itemid
@SeanLange的可能重复我不认为它的重复,我的是不同的问题,我希望通过将
whl
表中的记录添加到
,
,
中来更新fldXml
字段<代码>``是恒定的……这正是另一个问题所做的。您可以在sql server的更新语句中使用联接。@SeanLange的可能重复项我不认为它的重复项,我的重复项是不同的问题,我希望通过将whl
表中的记录添加到
,
,
中来更新fldXml
字段<代码>``是恒定的……这正是另一个问题所做的。您可以在sql server的更新语句中使用联接。谢谢您fldxml是一个text
datatype如果fldxml
是varchar,那么您可以像fldxml='''++wi.disc\u note+…
谢谢您fldxml是一个text
datatype如果fldxml
是varchar,那么您可以像fldXml=''+wi.disc\u note+…