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 )
expression-expression 要转换的表达式。
subtype geometry-expression 要转换到的目标子类型。
取决于所请求的数据类型。
只能对几何使用 TREAT 函数。
如果表达式的的动态类型不是目标数据类型的子类型,则返回错误。CAST 函数还可用于更改几何表达式的声明类型。CAST 函数可用于在子类型层次之外做出更改。例如,CAST 可用于将单点转换为多点。这些类型的转换可能以意外方式更改表达式的动态类型,所以在从超类型转到子类型时最好使用 TREAT。此外,TREAT 函数的执行效率高于 CAST 函数。
SQL/2008 服务商扩充。
在 Interactive SQL 中执行以下程序可创建表并向表中加载两个值:
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;
以下查询成功是因为使用 CAST 语句代替了 TREAT 语句:
SELECT CAST( geo AS ST_Point ) FROM treatExample WHERE pk = 1;