4 条记录已选择。
db2 => select count(*) from travel where mdistance > kdistance
SQL0401N 运算 ">" 的操作数的数据类型不兼容或者不可比较。 SQLSTATE=42818
db2 => 42818
SQLSTATE 42818: 运算符或函数的操作数不兼容或者不可比较。
通过将kilometers类型先转换为其基类型integer,在转换为miles类型,就可以与miles类型的数据进行比较了。
实际上,所有基于自定义单值数据类型的比较操作,都需要将该UDT转换为其基类型,在进行比较或者转换操作。
db2 => select * from travel where mdistance > miles(integer(kdistance))
ID KDISTANCE MDISTANCE
--------- ----------- -----------
SCCD00001 29 34
1 条记录已选择。
db2 => select * from travel where mdistance > 20
SQL0401N 运算 ">" 的操作数的数据类型不兼容或者不可比较。 SQLSTATE=42818
db2 => select * from travel where mdistance > integer(20)
SQL0401N 运算 ">" 的操作数的数据类型不兼容或者不可比较。 SQLSTATE=42818
db2 => select * from travel where mdistance > miles(20)
ID KDISTANCE MDISTANCE
--------- ----------- -----------
SCCD00001 29 34
LNDL00001 45 33
2 条记录已选择。
★总之,同类型之间的数据才可以进行比较!
3、删除
drop [distinct] type type_name
删除自定义数据类型的时候,要注意,不能有列或者其他对象引用这个UDT,否则将会报错:
SQL0478N 不能对对象类型 "TYPE" 执行 DROP、ALTER、TRANSFER OWNERSHIP 或REVOKE,
因为它有一个类型为 "TABLE" 的从属对象 "ADMINISTRATOR.TRAVEL"。SQLSTATE=42893
db2 => drop type kilometers
DB20000I SQL 命令成功完成。
db2 => drop type miles
DB20000I SQL 命令成功完成。
来源:http://blog.csdn.net/bobo12082119/article/details/8770549
--the end--