所以很快我收到一个SQL错误:ORA-00932:不一致的数据类型:预期NUMBER得到了OE.CUST_ADDRESS_TYP 00932. 00000 - 当我尝试检索字符串数据的一部分时,“不一致的数据类型:预期%s得到%s”。
SELECT dbms_lob.SUBSTR(cus.cust_address, 0, INSTR(cus.cust_address, ',')-1) AS output
FROM oe.customers cus;
基本上这就是我的陈述。
数据如下:OE.CUST_ADDRESS_TYP('322 E Michigan St','53202','Milwaukee','WI','US')
我只想展示这个城市,在这种情况下将是密尔沃基。
但是,cust_address列的data_type设置为CUST_ADDRESS_TYP,它是address_typ类型的对象列。
我只想选择一个字符串的一部分,例如,我只想从OE.CUST_ADDRESS_TYP('322 E Michigan St','53202','Milwaukee','WI','US')中选择密尔沃基。
CUST_ADDRESS CUST_ADDRESS_TYP是4 address_typ类型的对象列。
这就是表格中的显示方式。
因为语句适用于varchar类型的列而不是这个列,所以真的让我感到烦恼。
亲切的问候,
P.S。通过使用对象类型列修复它,没有使用Treat tho。非常感谢。
答案 0 :(得分:0)
请参阅Oracle文档中的对象类型请求语义:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions198.htm
SQL> create type comp_type is object(
2 x varchar2(10)
3 , y varchar2(10)
4 )
5 /
SQL> create table t (col comp_type)
2 /
SQL> insert into t values(comp_type('A','B'))
2 /
SQL> commit
2 /
SQL> select treat(col as comp_type).x, treat(col as comp_type).y from t
2 /
TREAT(COLA TREAT(COLA
---------- ----------
A B