更新列中字符串的值 SQL 服务器
UPDATE value of String in a column SQL Server
我在 table PERSON 中有一个名为 PROPERTYDATA 的 VARCHAR 列,它具有这样的数据
<java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="${param.TaskOpen eq true ? true : ''" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />
这实际上显示了在系统中创建的字段,其值低于它,例如变量名 ALLOWUSER 的值为真。
STATUSTASK 的值将始终为 ${param.TaskOpen eq true ?是的...
我想写两个查询
- 更新查询,该查询会将字段 STATUSTASK 的值更新为空,即 "" WHERE PROPERTYCOLOR value is 1 in EACH ROW。如果 ROW 数据的 PROPERTYCOLOR 不是 1,那么我们应该保持原样。
所以结果将是
<java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />
DELETE 字段名称和值 WHERE PROPERTYCOLOR 值为 1 即在查询之后该行现在应该是
<java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />
我们应该这样做吗?
UPDATE PERSON SET PROPERTYDATA = (SUBSTRING (PROPERTYDATA))...我卡住了,请帮忙
谢谢,
艾登
可以这么说,我没有答案,但我已经看过这个并设法编写了一些转换为 XML 的查询并查询数据,这可能有助于您获得到最终的解决方案,所以我将 post 我所做的:
CREATE TABLE #temp
(
propertydata VARBINARY(MAX) ,
propertyxml XML
)
INSERT INTO #temp
( propertydata ,
propertyxml
)
VALUES ( CAST(' <java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="${param.TaskOpen eq true ? true : ''" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />' AS VARBINARY(MAX)) ,
CAST(' <java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="${param.TaskOpen eq true ? true : ''" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />' AS XML)
)
SELECT propertydata ,
propertyxml
FROM #temp
SELECT t2.Loc.query('.') XmlRow ,
t2.Loc.query('.').value('(/java.lang.String/@valueOf)[1]',
'nvarchar(100)') AS AttributeValue
FROM #temp
CROSS APPLY propertyxml.nodes('java.lang.String') AS t2 ( loc )
WHERE t2.Loc.query('.').value('(/java.lang.String/@valueOf)[1]',
'nvarchar(100)') IS NOT NULL
DROP TABLE #temp
产生:
XmlRow AttributeValue
<java.lang.String valueOf="ALLOWUSER" /> ALLOWUSER
<java.lang.String valueOf="true" /> true
<java.lang.String valueOf="STATUSTASK" /> STATUSTASK
<java.lang.String valueOf="${param.... /> ${param....
<java.lang.String valueOf="PROPERTYCOLOR" /> PROPERTYCOLOR
<java.lang.String valueOf="1" /> 1
我在 table PERSON 中有一个名为 PROPERTYDATA 的 VARCHAR 列,它具有这样的数据
<java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="${param.TaskOpen eq true ? true : ''" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />
这实际上显示了在系统中创建的字段,其值低于它,例如变量名 ALLOWUSER 的值为真。
STATUSTASK 的值将始终为 ${param.TaskOpen eq true ?是的...
我想写两个查询
- 更新查询,该查询会将字段 STATUSTASK 的值更新为空,即 "" WHERE PROPERTYCOLOR value is 1 in EACH ROW。如果 ROW 数据的 PROPERTYCOLOR 不是 1,那么我们应该保持原样。
所以结果将是
<java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />
DELETE 字段名称和值 WHERE PROPERTYCOLOR 值为 1 即在查询之后该行现在应该是
<java.lang.String valueOf="ALLOWUSER" /> <java.lang.String valueOf="true" /> <java.lang.String valueOf="PROPERTYCOLOR" /> <java.lang.String valueOf="1" />
我们应该这样做吗?
UPDATE PERSON SET PROPERTYDATA = (SUBSTRING (PROPERTYDATA))...我卡住了,请帮忙
谢谢,
艾登
可以这么说,我没有答案,但我已经看过这个并设法编写了一些转换为 XML 的查询并查询数据,这可能有助于您获得到最终的解决方案,所以我将 post 我所做的:
CREATE TABLE #temp
(
propertydata VARBINARY(MAX) ,
propertyxml XML
)
INSERT INTO #temp
( propertydata ,
propertyxml
)
VALUES ( CAST(' <java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="${param.TaskOpen eq true ? true : ''" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />' AS VARBINARY(MAX)) ,
CAST(' <java.lang.String valueOf="ALLOWUSER" />
<java.lang.String valueOf="true" />
<java.lang.String valueOf="STATUSTASK" />
<java.lang.String
valueOf="${param.TaskOpen eq true ? true : ''" />
<java.lang.String valueOf="PROPERTYCOLOR" />
<java.lang.String valueOf="1" />' AS XML)
)
SELECT propertydata ,
propertyxml
FROM #temp
SELECT t2.Loc.query('.') XmlRow ,
t2.Loc.query('.').value('(/java.lang.String/@valueOf)[1]',
'nvarchar(100)') AS AttributeValue
FROM #temp
CROSS APPLY propertyxml.nodes('java.lang.String') AS t2 ( loc )
WHERE t2.Loc.query('.').value('(/java.lang.String/@valueOf)[1]',
'nvarchar(100)') IS NOT NULL
DROP TABLE #temp
产生:
XmlRow AttributeValue
<java.lang.String valueOf="ALLOWUSER" /> ALLOWUSER
<java.lang.String valueOf="true" /> true
<java.lang.String valueOf="STATUSTASK" /> STATUSTASK
<java.lang.String valueOf="${param.... /> ${param....
<java.lang.String valueOf="PROPERTYCOLOR" /> PROPERTYCOLOR
<java.lang.String valueOf="1" /> 1