sql - 使用 substr 和 instr 更新分隔字符串

标签 sql oracle decode substr

我在名为 datos 的列中有以下数据。我想将第 8 个斜杠 (DR004) 之后的文本更新为 DR013。

/1/14/0/0/ / / /DR004/1/rttrgftgr/ZM003/0/0/0/1/0/

我尝试过使用这个

update sumcon
  set substr(datos, instr(datos, '/', 1, 8) + 1, 1) = 
        decode(substr(datos, instr(datos, '/', 1, 8) + 1, 1), ' ', 'DR013') 
  where nis_rad = 200000732;

但它不起作用。

以下是 datos 列中的数据示例

/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / /DR008/1/ /ZM004/0/0/0/0/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / / /1/ / /0/1/0/0/0/
/1/14/0/0/ / / /DR008/1/ /ZM004/0/0/0/1/0/
/1/14/0/0/ / / / /1/ / /0/0/1/1/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/
/1/14/0/0/ / / /DR001/1/ /ZM004/0/0/0/0/0/
/1/14/0/0/ / / / /1/ / /0/0/0/1/0/

最佳答案

@LalitKumarB's建议,将 UPDATE 语句更改为

UPDATE SUMCON
  SET DATOS = SUBSTR(DATOS, 1, INSTR(DATOS, '/', 1, 8)) ||
              'DR013' ||
              SUBSTR(DATOS, INSTR(DATOS, '/', 1, 9))
  WHERE NIS_RAD = 200000732;

SQLFiddle here

关于sql - 使用 substr 和 instr 更新分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29772735/

相关文章:

sql - 从 SQL 脚本调用 aspnet_regsql.exe

oracle - 根据 Oracle APEX 4.0 中的项目更改页面标题

sql - 非原子值 SELECT 是特定于 SQL Server 的还是可能在其他 DBMS-es 中?

json - golang json 使用字段名称进行解码

node.js - 如何使用 node.js 中的 .proto 文件解码编码的 Protocol Buffer 数据

php - MySQL语句在UPDATE SET时总是将值设置为0

sql - 在准备好的语句参数中使用表列

php - oci_bind_by_name 和 to_date PHP/OCI/Oracle

json - 在 Swift 中访问嵌套数据

mysql - 使用 select 命令更新 mysql 代码