원래 프로그램 코드에서 변경해야 하지만 현재 프로그램에서는 한개의 행만 불러서 수정하게 되어있어
한꺼번에 여러행을 업데이트 할려니 너무 일이많습니다.
그래서 일단 프로그램 수정전에 임시로 sql 쿼리로 직접 수정을 할려다 보니 한가지 문제가 생겼습니다.
<?xml version="1.0" encoding="utf-8"?>
<AlarmActionParam xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Id />
<IsExpanded>false</IsExpanded>
<IsSelected>false</IsSelected>
<Name />
<UseMapAutoDisplayAction>true</UseMapAutoDisplayAction>
<AlarmActionOptionList>
<Id />
<IsExpanded>false</IsExpanded>
<IsSelected>false</IsSelected>
<Name />
<OptionName>TEST1</OptionName>
<OptionValue>true</OptionValue>
</AlarmActionOptionList>
<AlarmActionOptionList>
<Id />
<IsExpanded>false</IsExpanded>
<IsSelected>false</IsSelected>
<Name />
<OptionName>TEST2</OptionName>
<OptionValue>true</OptionValue>
</AlarmActionOptionList>
...
</AlarmActionParam>
다음과 같은 코드가 varchar(max) 항에 들어있습니다.
<UseMapAutoDisplayAction>true</UseMapAutoDisplayAction>
같은경우는 replace 명령어로 true를 false로 바꾸는걸 한꺼번에 여려행에 처리했지만...
테스트2의 value값을 true에서 false로 바꿀려면 어떤 쿼리를 사용해야 할까요?
replace 를 쓰자니 테스트1에도 OptionValue 라는게 있어서 동시에 같이 바뀌는 결과가 나오네요.
OptionName 항목이 TEST2 인 것만 OptionValue 를 true -> false 로 바꾸어야 하는건가요?
그렇다면 replace 에 전체를 넣으면 될듯 한데요..
select
'
<OptionName>TEST1</OptionName>
<OptionValue>true</OptionValue>
<OptionName>TEST2</OptionName>
<OptionValue>true</OptionValue>
'
,replace(
'
<OptionName>TEST1</OptionName>
<OptionValue>true</OptionValue>
<OptionName>TEST2</OptionName>
<OptionValue>true</OptionValue>
',
'
<OptionName>TEST2</OptionName>
<OptionValue>true</OptionValue>
',
'
<OptionName>TEST2</OptionName>
<OptionValue>false</OptionValue>
'
)