Oracle long 类型转 varchar2
本想查一下新建VIEW的代码里是否包含特定的字串,结果报错:
SQL> select * from USER_VIEWS where upper(text) like '%MAP%';
select * from USER_VIEWS where upper(text) like '%MAP%'
ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 LONG
大概补充一下Oracle long类型的知识:
Oracle中的LONG类型有两种:
LONG文本类型,能存储2GB的文本。与VARCHAR2或CHAR类型一样,存储在LONG类型中的文本要进行字符集转换。
LONG RAW类型,能存储2GB的原始二进制数据(不用进行字符集转换的数据)。
在此并不解释如何使用LONG类型,而是会解释为什么你不希望在应用中使用LONG(或LONG RAW)类型。首先要注意的是,Oracle文档在如何处理LONG类型方面描述得很明确。Oracle SQL Reference手册指出:
不要创建带LONG列的表,而应该使用LOB列(CLOB、NCLOB、BLOB)。支持LONG列只是为了保证向后兼容性。
找了一圈,没有内置的函数做转换,参考了一下网上的处理方案,有些太复杂,有些兼容性不太好,反正也不会经常用,本着猿类的懒惰原则,写了个最简的处理方法:
CREATE OR REPLACE FUNCTION LONG_TO_CHAR(IN_WHERE VARCHAR,IN_TABLE_NAME VARCHAR,IN_COLUMN VARCHAR2)RETURN VARCHAR2 ASV_RET VARCHAR2(32767);V_SQL VARCHAR2(2000);BEGINV_SQL := 'select ' || UPPER(IN_COLUMN) || ' from' || UPPER(IN_TABLE_NAME) || ' where ' || IN_WHERE;EXECUTE IMMEDIATE V_SQLINTO V_RET;RETURN V_RET;END;
/
使用方法:
--视图应用例子WITH ALLVIEW AS(SELECT UV.*,LONG_TO_CHAR('view_name=''' || VIEW_NAME || '''', 'user_views','TEXT') VTEXTFROM USER_VIEWS UV)
SELECT * FROM ALLVIEW WHERE UPPER(VTEXT) LIKE '%MAP%'--普通表SELECT T.*,LONG_TO_CHAR('rowid=''' || ROWID || '''', 'conf_user', 'user_profile') VTEXTFROM CONF_USER T
Oracle long 类型转 varchar2相关推荐
- Oracle number 类型转换为 varchar2
项目初期表结构设计是非常重要,在字段类型定义样也要格外小心,业务开展后,修改字段类型代价非常大.本文主要记录在 oracle 中 number 类型转换为 varchar2 数据类型方法以及案例演示. ...
- oracle utf8 varchar,Oracle中字符集的类型决定varchar2的字符长度
1.前几天往数据库表里面插入数据的报了一个这样的错误如下: SQL> insert into student values('中华人民共和',60); insert into student v ...
- [转]Oracle中字符集的类型决定varchar2的字符长度
为什么80%的码农都做不了架构师?>>> 1.前几天往数据库表里面插入数据的报了一个这样的错误如下: SQL> insert into student values('中 ...
- Oracle 表已经有数据 修改字段类型,把varchar2类型变成date类型
Oracle修改字段类型,把varchar2类型变成date类型 表已经有数据 原来表是这样的 create table export ( name varchar2(10), datetimes v ...
- oracle nvachar 长度,Oracle中varchar、varchar2和nvarchar、nvarchar2
在设计Oracle数据库的时候需要为字段选取类型.对数据库中的varchar.varchar2和nvarchar.nvarchar2这几种数据类型一直不知道怎么选取. varchar和varchar2 ...
- oracle中的char和j,oracle中char与varchar2的区别
1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),在数据 ...
- Oracle自定义类型
Oracle自定义类型可以通过type/create type来声明或者创建 一,四种创建方式 1.1,使用create type创建object类型 create or replace type o ...
- oracle tovarchar2_oracle数据库中varchar2陷阱
https://www.cnblogs.com/iyangyuan/archive/2013/12/25/3491215.html 对应该类型,在oracle中有三种比较常用的类型:varchar2( ...
- oracle字段规则,Oracle的基本操作+Oracle字段类型(zz)
在Oracle关于时间属性的建表 Example: create tablecourses( cidvarchar(20)not null primary key, cnamevarchar(20)n ...
- oracle中varchar与varchar2的区别
一.oracle中varchar与varchar2的区别 varchar保留,Oracle以支持null将来与空字符串之间的区别,这是ANSI标准规定的. varchar2不区分null和空字符串,也 ...
最新文章
- 【怎样写代码】工厂三兄弟之抽象工厂模式(四):抽象工厂模式
- java操作LINUX上文件,设置权限问题
- 云服务器的操作系统是什么,服务器操作系统是什么?云服务器的操作系统怎么选择...
- hdu4609 3-idiots
- 在OpenShift上部署Java EE微服务
- AudioParam
- prettytensor 的使用
- powershell快捷键_使用键盘快捷方式启动powershell脚本
- 奶制品的生产lingo软件编辑
- 启动马达接线实物图_三相电机直接启动接线图及启动过程解说
- android的平台签名工具,《安卓开发》APK签名工具使用方法
- 银行资管智能化转型迫在眉睫 金融壹账通赋能两大核心能力
- java 整型数组定义_在Java中定义一个具有10个元素的整型数组a的语句是:___
- 【javaEE】网络编程套接字
- 吴恩达 DeepLearning 第二课第三周题目(包括选择题)
- 默纳克调试说明书_默纳克 - NICE3000调试说明书(修改版) -
- 微信公众号通过图片选取接口上传到阿里oss
- 高等数学(预备知识之函数的单调性、最值与奇偶性)
- 后李健熙时代的三星,将迎来怎样变局?
- 《个人信息保护条例》
热门文章
- UCDOS和鲍岳桥and 我和我的嵌入式GUI(DOS,Linux,uC/OS-II等)
- 郑州大学linux安装锐捷客户端
- 奇东锐腾服务器无法显示,奇东锐腾pxe全自动网刻工具
- 通过PyMuPDF编写增值税发票多PDF文件合并工具
- H264编码格式--图文解释
- BugKu 旋转跳跃(mp3stego(mp3隐写工具)的使用)
- linux wav 转mp3,linux下wav转换为mp3
- 给一个函数求导MATLAB,matlab求导
- 中标麒麟安装mysql教程_中标麒麟上安装配置达梦数据库7
- 用计算机键盘如何截屏,键盘上哪个键是截图 电脑键盘截图快捷键用法