XML値をPostgreSQL9.Xと比較する必要があります。例:
SELECT 1 FROM t WHERE xml1=xml2; -- error for XML datatype
ただし、テキストデータ型へのキャストでのみ実行できます。
SELECT 1 FROM t WHERE xml1::text=xml2::text; -- OK, but is a text-comparison
これを行うには、これが最善の方法ではありません。より良い比較アルゴリズムが必要です...それを探すと、おそらく「CanonicalXML」を比較できることがわかります。
PostgreSQLで「CanonicalXML比較」を行う方法は?
注:PostgreSQLチームは、XML比較について誤った前提を想定していますか?
XML比較に関する多くのドキュメントでは、 CanonicalXMLがその操作の参照形式であるとされています。元。ウィキペディアで彼らは言う、
W3Cによると、2つのXMLドキュメントが同じ標準形である場合、2つのドキュメントは特定のアプリケーションコンテキスト内で論理的に同等です。
しかし、PostgreSQL docs / 9.2によると、
xmlデータ型は、比較演算子を提供しないという点で珍しいものです。これは、XMLデータに対して明確に定義された普遍的に有用な比較アルゴリズムがないためです。
ええと、私にとってそれは誤った前提であり、PostgreSQLの重要な問題の本当の欠如を隠すことができます。