在Oracle数据库中,数据类型为char或者varchar的字段,里面存储的数据,可以是纯数字串,比如:  3433,也可以是带有英文字符的字符串,比如:  3433a。

Oracle对于纯数字串,其查询方式是比较随意的,where alert_id = '3433'  或者where alert_id = 3433  这两种查询条件都可以,也就是说,带引号或者不带引号都可以。

Oracle对于字符串,则只能用上面第一种方式(带引号),如果用第二种方式(不带引号),则会报错:ORA-01722: invalid number。

也就是说,虽然数据类型是一样的,但是Oracle内部对于纯数字串和字符串还是有所区分的,而且Oracle认为这个字段的所有数据都是这种类型。这个纯数字串和字符串的相互转化,可能就取决于一条数据。

如果在一个数据库中的某个字段,以前的数据都是纯数字串,这个时候你一定要注意,不要轻易向里面插入(或者更新为)一个字符串。因为以前的源代码可能两种查询方式都用了,你一旦插入一个字符串,则该字段的所有数据都变为字符串,以前用的第二种查询方式就不能用了。

这个错误很隐蔽,因为源代码并没有改变,这个位置的数据也没有改变,只是其他位置的数据改变了。如果改变数据库的人和编写源代码的人不是同一个人,就更难发现了。

因此,如果不想修改源代码的话,还是按照以前的方式来吧。

最新文章

  1. ORACLE 利用 REPLACE函数替换字段字符串
  2. Backbone框架浅析
  3. string的+操作与StringBuilder对象
  4. Java设计模式-Builder生成器模式
  5. 推荐一本好书给即将走入工作的程序员and程序媴
  6. 搭建Android开发环境之——Android4.0.3, 4.1, 4.2, 4.3, 4.x,及升级 ADT(22.0.5)和SDK(22.x)
  7. MySQL 常用命令大全
  8. PHP奇怪现象
  9. 支付宝开发中return_url和notify_url的区别分析
  10. 用javascript实现base64编码器
  11. java集合的操作(set,Iterator)
  12. java学习——平台的安装与部署
  13. 【模板小程序】求第n个质数
  14. CancellationTokenSource 和 CancellationToken 取消线程
  15. docker中的数据库
  16. 20165317 学习基础和C语言基础调查
  17. 操作 html 的时候是使用 dom 方法还是字符串拼接?
  18. SaltStack 和 Ansible 的简单比较
  19. 洛谷 P1144 最短路计数
  20. 七牛云存储 qiniu 域名 回收 文件上传 备份 下载 MD

热门文章

  1. java架构之路-(tomcat网络模型)简单聊聊tomcat(一)
  2. 原生JavaScript HTML DOM Style 对象参考
  3. 高强度学习训练第二天总结:Opencv+Android+CameraView小demo
  4. 新mac 下第一次 安装 mongodb 步骤
  5. Android中设置状态栏颜色和字体颜色
  6. linux 线程基础
  7. [linux] shell脚本编程-统计日志文件中的设备号发通知邮件
  8. STM32F429驱动SDRAM
  9. js数据类型详解
  10. Delphi-基础(例程、例程返回值)