Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
TREAT 関数では、ジオメトリ式の宣言されたタイプをサブタイプに変更できます。この関数は、空間データで使用します。
TREAT ( geometry-expression AS subtype )
geometry-expression 変換される式。
subtype geometry-expression の変換後のサブタイプ。
要求されたデータ型によって異なります。
TREAT 関数は、ジオメトリでのみ使用できます。
式の動的タイプがターゲットのデータ型のサブタイプでない場合は、エラーが返されます。また、CAST 関数を使用して、ジオメトリ式が宣言されたタイプを変更することもできます。ただし、CAST 関数では、サブタイプ階層の外側を変更できます。たとえば、CAST を使用して、ポイントをマルチポイントに変換することができます。このような変換を実行すると、式の動的タイプに予期しない変更が加えられることがあるため、スーパータイプからサブタイプに移動する場合は TREAT 関数を使用することをおすすめします。また、TREAT 関数は、CAST 関数と比較して、より効率的に実行されます。
SQL/2008 ベンダー拡張。
Interactive SQL で次の文を実行して、テーブルを作成し、2 つの値をロードします。
DROP TABLE IF EXISTS treatExample; CREATE TABLE treatExample( pk INT PRIMARY KEY, geo ST_Geometry ); INSERT INTO treatExample VALUES(0, NEW ST_Point(3,4) ); INSERT INTO treatExample VALUES(1, NEW ST_MultiPoint( new ST_Point( 5, 6 ) ) );
次のクエリはエラーを返します。タイプ '%1' には '%2' というメソッドはありません ('%3' 付近)。を参照してください。
SELECT geo.ST_X() FROM treatExample T WHERE pk = 0;
次のクエリは成功します。
SELECT TREAT( geo AS ST_Point ).ST_X() FROM treatExample WHERE pk = 0;
SELECT TREAT( geo AS ST_Point ).ST_X() FROM treatExample T WHERE pk = 0;
次の例では、TREAT 文の代わりに CAST 文が使用されているため、成功します。
SELECT CAST( geo AS ST_Point ) FROM treatExample WHERE pk = 1;