技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Oracle --> substr、replace函数简单应用

substr、replace函数简单应用

浏览:3219次  出处信息

ORACLE接触的久了,我的大脑也开始遵循LRU原则,不常用的知识很快就会被刷新掉,为了和ORACLE一样保证数据一致性,只好将这些东西保存到硬盘上。
前段时间数据已经加载到数据库,最近一直做的是整理这些数据,SUBSTR和REPLACE函数用的比较多, 这里简单记录下。
有一张存放图片的表,包含以下字段,IDENTIFIER是档号,JPG_PATH是图片的路径和名字,其他字段这里没有用到,不做描述。

SQL> select id,IDENTIFIER,JPG_PATH from images where rownum<11;
      ID   IDENTIFIER    JPG_PATH
--------   -----------   ----------------------------------
       1                 /waiwubu/0220/18-0220-003-0001.JPG
       2                 /waiwubu/0221/18-0221-003-0001.JPG
       3                 /waiwubu/0221/18-0221-003-0002.JPG
       4                 /waiwubu/0221/18-0221-003-0003.JPG
       5                 /waiwubu/0223/18-0223-005-0001.JPG
       6                 /waiwubu/0223/18-0223-005-0002.JPG
       7                 /waiwubu/0223/18-0223-005-0003.JPG
       8                 /waiwubu/0223/18-0223-005-0004.JPG
       9                 /waiwubu/0223/18-0223-005-0005.JPG
      10                 /waiwubu/0223/18-0223-005-0006.JPG
10 rows selected.

图片是用SQLLDR工具加载到数据库,夹在是只知道图片的路径和名字,并不知道档号信息,但是知道图片名字去除最后一个”-”后面的部分就是档号,而且档号字段用来和其他表关联,必须要有档号的信息,就需要利用JPG_PATH字段来生成档号信息,就需要利用截断函数SUBSTR了,这里SUBSTR函数的用法如下:

SQL> update images set identifier=substr(jpg_path,15,11) where rownum<11;
10 rows updated.

这里SUBSTR函数用到了3个参数,jpg_path是要截取的字段名字,后面的“15”是表示从第几位开始截取,如果后面不再加数值,表示一直截取到最后,这里的第三个参数“11”表示一共截取多少位,也就是截取多长的意思,如下:

QL> select id,IDENTIFIER,JPG_PATH from images where rownum<11;
      ID   IDENTIFIER    JPG_PATH
--------   -----------   ----------------------------------
       1   18-0220-003   /waiwubu/0220/18-0220-003-0001.JPG
       2   18-0221-003   /waiwubu/0221/18-0221-003-0001.JPG
       3   18-0221-003   /waiwubu/0221/18-0221-003-0002.JPG
       4   18-0221-003   /waiwubu/0221/18-0221-003-0003.JPG
       5   18-0223-005   /waiwubu/0223/18-0223-005-0001.JPG
       6   18-0223-005   /waiwubu/0223/18-0223-005-0002.JPG
       7   18-0223-005   /waiwubu/0223/18-0223-005-0003.JPG
       8   18-0223-005   /waiwubu/0223/18-0223-005-0004.JPG
       9   18-0223-005   /waiwubu/0223/18-0223-005-0005.JPG
      10   18-0223-005   /waiwubu/0223/18-0223-005-0006.JPG
10 rows selected.

这里如果不加第三个参数“11”的话,结果会从第15位一直截取到最后,结果如下:

SQL> update images set identifier=substr(jpg_path,15) where rownum<11;
10 rows updated.
SQL> select id,IDENTIFIER,JPG_PATH from images where rownum<11;
      ID   IDENTIFIER             JPG_PATH
--------   --------------------   ----------------------------------
       1   18-0220-003-0001.JPG   /waiwubu/0220/18-0220-003-0001.JPG
       2   18-0221-003-0001.JPG   /waiwubu/0221/18-0221-003-0001.JPG
       3   18-0221-003-0002.JPG   /waiwubu/0221/18-0221-003-0002.JPG
       4   18-0221-003-0003.JPG   /waiwubu/0221/18-0221-003-0003.JPG
       5   18-0223-005-0001.JPG   /waiwubu/0223/18-0223-005-0001.JPG
       6   18-0223-005-0002.JPG   /waiwubu/0223/18-0223-005-0002.JPG
       7   18-0223-005-0003.JPG   /waiwubu/0223/18-0223-005-0003.JPG
       8   18-0223-005-0004.JPG   /waiwubu/0223/18-0223-005-0004.JPG
       9   18-0223-005-0005.JPG   /waiwubu/0223/18-0223-005-0005.JPG
      10   18-0223-005-0006.JPG   /waiwubu/0223/18-0223-005-0006.JPG
10 rows selected.

在更新完图片表的档号字段后,文件表根据档号字段就可以好图片表关联查找到图片信息,但是测试后发现,个别条目数据并不能挂载到图片,经查发现是文件表的档号字段由于历史数据错误,部分存在空格,如下:

SQL> select ''''||IDENTIFIER||'''' from t_file_info where IDENTIFIER like '% % 
and rownum<2;
IDENTIFIER
---------------
'18-0223-005  '

由于存在多余的空格,在图片表里查询不到这些有空格的档号,所以会挂接不上,这样就需要将这些多余的空格替换掉,这里用到了REPLACE函数。

SQL> update t_file_info set identifier=replace(identifier,' ','') 
where IDENTIFIER like '% % and rownum<2;
1 rows updated.

这里REPLACE函数也用到了3个参数,第一个参数(identifier)是要替换的字段名字,第二个参数(’ ‘),是要替换的内容,这里是空格,第三个字段(‘’)是替换成什么内容,这里两个单引号之间什么也没有,表示将空格替换成空,也就相当于将空格删除,替换后数据如下:

SQL> select ''''||IDENTIFIER||'''' from t_file_info where IDENTIFIER like '% % 
and rownum<2;
IDENTIFIER
---------------
'18-0223-005'

删除掉多余的空格,条目数据已经可以和图片正确挂接。

建议继续学习:

  1. window.location.href,window.location.replace(),window.location.reload() 三者的区别    (阅读:3574)
  2. href,replace(),reload() 三者的区别    (阅读:2789)
  3. REPLACE INTO 为什么返回”2 rows affected”    (阅读:2298)
  4. javascript的String.replace的妙用    (阅读:2197)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1