当前位置: 首页 > 面试题库 >

在Oracle上选择字符串作为数字

黄丰
2023-03-14
问题内容

我发现了这种奇怪的行为,并且为此感到震惊……有人有什么想法吗?

Oracle 10g:我有两个不同的表,都具有名为“ TESTCOL ”的列,作为 Varchar2 (10) ,不能为空。

如果我对 table1 执行此查询,则会得到正确的结果:

select * from table1 where TESTCOL = 1234;

请注意 ,我不是专门放置“ 1234” …不是错字,而是动态生成的查询,因此我将尽量不进行更改(至少在不久的将来不会更改)。

但是,如果我在 table2 上运行相同的查询,则会收到以下错误消息:

ORA-01722: Invalid number

这两个查询都在相同的会话,相同的数据库上运行。

我一直在通过该列连接这两个表,并且该连接可以正常工作,每当我尝试使用该条件时,就会显示唯一的问题。

关于一张桌子与另一张桌子可能有什么不同的任何想法?

提前致谢。


问题答案:

如果TESTCOL包含非数字,那么在将TESTCOL条目转换为数字时,Oracle可能会遇到问题。因为,它在内部执行的操作是:

select * from table1 where TO_NUMBER(TESTCOL) = 1234;

如果您确定1234不能将其表示为VARCHAR文字,请尝试执行此操作,以便比较varchar值,而不是数字值:

select * from table1 where TESTCOL = TO_CHAR(1234);


 类似资料:
  • 问题内容: 也许这听起来有点疯狂,但是我需要提出一个查询以仅从字母数字字段中检索字母。 例如: 表 1234ADD 3901AC 1812OPA 82711AUU 结果预期 ADD AC OPA AUU 谢谢! 问题答案: 看来您只想删除数字。您可以在10g或11g中使用:

  • 问题内容: 我有下面的字符串: 所以我要选择,因为它是最后一个时期之后的字符串。我怎样才能做到这一点? 问题答案: 您可能可以使用复杂的正则表达式执行此操作。我喜欢以下方法: 没有什么比测试能证明当字符串结尾时这行不通的了。大约-0 =0。这是一个改进: 编辑: 您的示例在我在本地Oracle和SQL Fiddle中运行时都有效。 我正在运行此代码:

  • 我有这样的想法:使用PHP的将多维数组/非多维数组转换为JSON字符串,并将数据存储到SQL数据库中。 例如,我有一个名为'users'的表。表'users'有3个字段:id、name、data 使用php,我想获取用户John的数据: 现在“data”字段的值/文本如下所示: 我将使用PHP的对“data”字段进行解码,然后使用自制的PHP函数将stdClass对象转换为数组。然后我可以在任何地

  • 我正在使用jooq的DSL。在我的Java代码中选择,我有需要从字符串中确定索引的场景。使用获取所需的索引值作为字符串,但DSL中不支持将其转换为数字的方法。示例: 嵌套的子字符串需要转换为数字

  • 问题内容: 目标是用数字表示的char值替换SQL查询中返回的整数值。例如: 标记为“端口”的表属性定义为1-4之间的整数。1 =篮球,2 =曲棍球,等等。下面是数据库表,然后是所需的输出。 数据库表: 所需的输出: 将这些整数值转换为String值的最佳实践是什么?在传递给程序之前使用SQL转换值?使用脚本语言来更改程序中的值?更改数据库设计? 问题答案: 数据库应该保存这些值,并且您应该执行连

  • 问题内容: 我将数字保存到MySQL数据库。由于某些其他情况,我无法制作它们。 排序时将其作为字符而不是数字。 在数据库中我有 在我的页面上,它显示如下排序列表: 如何使它按数字升序显示? 问题答案: 如果可能,则无论如何仅存储数字,应将列的数据类型更改为数字。 如果您无法执行此操作,则将列值 强制转换 为 或 隐式地 使用例如数学运算来强制转换为数字 BTW MySQL将字符串从左到右转换。例子