更新列中字符串的值 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 : &apos;&apos;" />
    <java.lang.String valueOf="PROPERTYCOLOR" />
    <java.lang.String valueOf="1" />

这实际上显示了在系统中创建的字段,其值低于它,例如变量名 ALLOWUSER 的值为真。

STATUSTASK 的值将始终为 ${param.TaskOpen eq true ?是的...

我想写两个查询

  1. 更新查询,该查询会将字段 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" />
  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 : &apos;&apos;" />
    <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 : &apos;&apos;" />
    <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