XQueryでは、XMLからデータの文字列を検出する方法
-
05-09-2019 - |
質問
私は、このような
などの値を保持しているSQL Serverのデータベースの型指定されていないXML列を持っています 1
<root><a>123</a></root>
<root>23d</root>
23
私は次のクエリをしようとしていた。
declare @x xml
set @x='1'
select @x.exist('xs:int(.)')
しかし、ここでの問題は1を返す関数を存在している場合でも@x='<root><a>12</a></root>'
私はそのような場合には「0」に出力したいと思います。
アウト方法はありますか?
解決
XQuery式がnull以外のノードリストに評価された場合、
.exist()メソッドは、それ以外の場合は0だから、それはあなたの例では1時間ごとに戻ります返し、1を返します。
私が正しくあなたを理解していれば、それはXMLだとき、あなたは値がちょうど整数であるとき、それは1を返すようにしたい、と0?
その場合は、次の操作を実行する必要があります:
declare @x xml
set @x='<root><a>12</a></root>'
select ISNUMERIC(CAST(@x.query('/') AS nvarchar))
これは返す必要があります0
declare @x xml
set @x='12'
select ISNUMERIC(CAST(@x.query('/') AS nvarchar))
これは返す必要があります1。
他のヒント
XQueryの中にビルトインタイプのテストはどう?
. instance of xs:integer
コンテキスト項目が整数である場合は、それ以外の場合はfalse、あなたは真のブール値が得られます。
所属していません StackOverflow