我在表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的值为true。
STATUSTASK的值总是$ {param.TaskOpen eq true?真的......
我想写两个查询
所以结果将是
<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" />
删除字段名称和值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))...我被卡住了,请帮忙
谢谢,
艾登
答案 0 :(得分:1)
我没有答案可以这么说,但我已经看过这个并设法写了一些转换为XML并查询数据的查询,这可能会帮助你找到答案。最终的解决方案,所以我发布了我已经完成的工作:
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