首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MOS文章实验:ORA-01722 from Queries with Dependent Predicates

当使用松散类型('loose typing')字段,且包含可变谓词顺序的场景下,在类型转换发生之前如果不能删除会产生错误的列值,那么就有可能产生上述的一些类型转换错误。...数据类型和数据列值都是VARCHAR字符串,不需要类型转换。...会提示to_number的处理存在无效数字。...对于data列中22这个记录,包含NUMBER数字类型,因此转换是有效的,但对于其他行,这种转换就是无效的,因为不包含等价的数值,例如'Pet Foods Inc'。...@dbsnake提过Oracle 10g及其以后的版本中,Oracle会对某些类型的查询转换计算成本,只有当等价改写SQL的成本值小于未经过查询转换的原始SQL的成本值时,Oracle才会对目标SQL执行这些查询转换

73820

【已解决】ORA-01722: invalid number

语句提示【ORA-01722: invalid number】无效数字错误。...(SUM)、求平均数(AVG)等函数操作,但是字段的数据却不匹配,比如(对字符串数字【.12.5036】求和就会报错,正常应该是(12.5036)) 2.3、对数据进行转换操作 即需要转换数据的类型,...比如将字符串数值内容转为数字类型,如(to_number(‘.12.5036’)或to_number(‘a’))都会报错,但是【to_number(‘12.5036’)】则正确。...三、注意事项 ①当我们在对数据进行操作时,需要特别注意数据的类型,认真处理好不同数据类型的内容,保证数据内容的完整准确。...解决 使用Oracle的REGEXP_SUBSTR函数进行截取: SELECT REGEXP_SUBSTR('1-2', '[^-]+') FROM dual; 这里,REGEXP_SUBSTR函数用于从字符串中按照正则表达式匹配并截取子字符串

4.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    oracle 常用函数

    参考: oracle常用函数详解(详细) 两种类型函数 oracle 数据库中主要使用两种类型的函数: 单行函数 单行函数:操作一行数据,返回一个结果 字符串函数:对字符串操作。...常见的转换函数有: TO_CHAR(d|n[,fmt]) 把日期和数字转换为制定格式的字符串。..." FROM DUAL; 代码解析: 在格式化字符串中,使用双引号对非格式化字符进行引用,针对数字的格式化,请自行百度。...:41', 'YYYY-MM-DD HH24:MI:SS') "date" FROM DUAL; TO_NUMBER(X,[,fmt]) 把一个字符串以fmt格式转换为一个数字 -- TO_NUMBER...(X,[,fmt]) - 转换为数字 SELECT TO_NUMBER('-$12,345.67','$99,999.99') "num" FROM DUAL; CAST(X as type) 将X转换为指定的兼容的数据库类型

    1.3K11

    Oracle应用实战六——函数+集合

    把首字符大写 initcap('smith') 4. 字符串的连接可以使用concat可以使用“||”建议使用“||” concat('hello', 'world') 5....字符串的截取,使用substr,第一个参数是源字符串,第二个参数是开始索引,第三个参数长度,开始的索引使用1和0效果相同(掌握) substr('hello', 1,3) 6....获取字符串的长度 length('hello') 7....d, 日是两位使用dd 在结果中10以下的月前面被被补了前导零,可以使用fm去掉前导零 TO_CHAR还可以给数字做格式化 范例:把雇员的工资按三位用“,”分隔,在oracle中“9”代表一位数字 如果在钱的前面加上国家的符号可以使用...TO_NUMBER:数值转换函数 TO_NUMBER可以把字符串转换成数值 3.

    1K50

    Oracle数据库之操作符及函数

    二、SQL函数:     用于执行特殊的操作的函数; 1、分类:   单行、 分组、分析; 2、单行函数分类:   从表中查询的每一行只返回一个值;   字符、数字、日期、转换、其他; 3、字符函数:...; to_date:将字符串转化为日期; to_number:将数字字符串转化为数字;----可以实现直接在sql语句中进行格式的转换 --转换函数(字符串,格式) Select TO_CHAR(0.123...,'$0.9999') FROM DUAL; --字符串转日期 select to_date ('2005-02-28','yyyy-mm-dd') from dual; --字符串转数字 select...to_number('20') from dual; 其他函数: nvl:isnull,不为空时为本身,为空时指定0; nvl2:不为空时指定值2,为空时指定值3; NullIF:相等时为空,否则为前者...dual;--相等为空,不等为前者 7、分组函数:   基于一组行来返回结果; avg、min、max、sum、count 8、分析函数:     根据一组行来计算聚合值;用于计算完成聚集的累计排名

    1.3K20

    Oracle优化器对谓词顺序处理的一个场景

    最近听了个讲座,其中介绍到了Oracle的谓词,原始版本的例子,如下所示,从数据上能看到,c1='3'的时候,c2的值是个字符串类型的数字, SQL> create table test(c1 char...如上例子中,按照语义,就是先执行c1='3',按说他得到的c2就是数值类型的字符串,可以使用to_number函数,但实际上无论where中怎么写,都是按照to_number(c2)>2 and c1=...但是如果使用RBO优化器,where条件的顺序就可能影响执行计划。...眼见为实,如果c2定义为number或者varchar2(1), 无论何种写法,都可以正常执行, 从谓词条件,能知道他的顺序就是我们需要的,先按照c1='3'进行过滤,他得到的c2,都是能使用to_number...例如c1存储的就是“数字”,如果定义为字符串类型,varchar2还好,char就出现了上述执行错误的场景,如果“数字”就使用数值类型number存储,就会绕过这个坑,同理,像“日期”用字符串类型存储存在相同的问题

    58650

    oracle 常见函数_oracle有没有包含的函数

    oracle 数据库 中主要使用两种类型的函数: 1. 单行函数:操作一行数据,返回一个结果 常用的单行函数有: 字符串函数:对字符串操作。 数字函数:对数字进行计算,返回一个数字。...聚合函数(多行函数、分组函数、组函数):操作多行数据,并返回一个结果。比如 SUM 一、字符串函数 字符函数接受字符参数,这些参数可以是表中的列,也可以是一个字符串表达式。...常见的转换函数有: 1、TO_CHAR(d|n[,fmt]) 把日期和数字转换为制定格式的字符串。...代码解析: 在格式化字符串中,使用双引号对非格式化字符进行引用 针对数字的格式化,格式化字符有: 参数 示例 说明 9 999 指定位置处显示数字 . 9.9 指定位置返回小数点 , 99,99 指定位置返回一个逗号...3、TO_NUMBER(X,[,fmt]) 把一个字符串以fmt格式转换为一个数字 代码演示:TO_NUM函数 SELECT TO_NUMBER(‘-12,345.67′,’99,999.99’)”num

    2.9K30

    Oracle函数学习(转换函数)

    –转换函数: –to_number(数值类型的字符):将字符转换为数值 –to_char(数值或者是日期):将数值或者日期转换为字符 –to_date(日期格式的字符):将字符转换为日期 数值和字符的互转...字符转换为数字char---->number select to_number(‘123’)+2 from dual 数字转换字符number—>char 指定显示格式: –9表示位置占位...,例如999,999,999会将数字按照三个一组使用逗号隔开。...select * from emp where sal>‘2000’; select * from emp where sal>to_number(‘2000’); 日期和字符的互转 –一般使用方式...:新增数据使用to_date(),查询数据使用to_char() –字符转换为日期 char—>date –使用to_date(‘要转换的字符’,日期格式)函数将字符转换为日期 –注意1:字符必须符合日期格式

    84720

    Phoenix填坑记4:为整10的倍数的数值会被显示成科学计数法

    phoenix的写法对数据类型限制比较严格,对于字符串类型,需要使用to_number将字符串转换成数字,但是在使用过程中,发现一个很奇怪的现象,那就是以整10为倍数的数据,比如说100,就会被显示成科学计数法...首先,我的表在设计的时候,采用字符串来保存ID,但是另外一个表是采用BIGINT类型存储的,所有需要对该字段进行转换,转成数组,写法为:to_number(TRIM(f_test),'###0')。...具体的写法如下: select f_test1,f_test2,to_number(TRIM(f_test3),'###0'),to_number(f_test4,'#'),to_number(f_test5...),to_number('100','##########E0') from dwb.t_test where f_test4 = 3000700 在使用过程中,发现以整10为倍数的数据,比如说...后来才发现,这是Phoenix的一个bug,跟sql的写法无关,在正常使用中,并无发现异常情况,如果大家发现无法正常显示,可以使用to_char将数据转成字符串再显示出来就行。

    73020

    Oracle-ORA-01722 invalid number错误

    本来正常的,经过抓包才知道原来是数字型的无意中多了乱码!...   上面的SQL语句通常是可行的,查询的时候oracle解析该条件时,会首先to_number(mdn)    再和where mdn=13812345678进行比较判断,如果能够确保mdn字段里面存放的全为数字...,    当查询扫描到133aa000000时to_number(mdn)报错ORA-01722 invalid number 2....)=9 1)以前执行SQL时,ORACLE进行全表扫描,对每行的srvclass都转换为number型进行比较.以前表中的srvclass的取值只有字符0到9,所以没有出错; 2)后来表中加入了新数据...,srvclass的取值都是字母串,ORACLE进行全表扫描时,对新行上srvclass的to_number转换当然就返回ORA-01722 invalid number了。

    1.7K50

    sql的隐式转换_js强制转换和隐式转换

    大家好,又见面了,我是你们的朋友全栈君。 什么叫做隐式转换? 显示转换,就是你使用转换函数进行操作。 隐式转换,就是你不使用转换函数,默认就给转换了。...比如定义一个int型的变量@a,然后给变量符值 set @a = '2' ,这个就会隐式转换,把字符转换成数字了。...text set age=’19’相当于update text set age=to_number(’19’) 2.当比较字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。...(id)=1 如果id列建有索引此时将失效 3.当比较字符型和日期型的数据时,oracle会把字符型转换为日期型。...小结 Oracle使用数据类型的优先级来决定隐式类型转换,原则是将优先级低的转换为优先级高的(数据类型优先级为:Number>字符类型>日期类型)。

    3K30

    Oracle EBS学习:PLSQL类型格式转换

    在oracle PL/SQL 开发中,格式转换是很常见,也用的很多的; 1: 字符转数字 TO_NUMBER(char ) 字符转换到数字类型 ​编辑 常见就上面这用...日期格式模式 可以套用to_date的,增加数字格式的如下 ​编辑 使用FM(在格式控制符前添加)符号可以去掉空格或是首位的零。...如果指定了NLSPARAMS,则它控制返回字符串的月和日分量所使用的语言。格式为: ‘NLS_DATA_LANGUAGE=language’,language指需要的语言。...小数点 , 千分符 B 当整数部分为0时,将整数部分填充为空格。 例:B999 MI 返回带有后继符号而不是前导负号的负数值,正数值将带有后继的空格。...L99 V 返回一个被乘以10的N次方的数值,这里N是V后边9的个数。99V99 EEEE 使用科学记数法返回该数值。9.99EEEE RM 使用大写的罗马数字表示返回该数值。

    1.3K20
    领券