SQL - 在一个位置更新多个值

时间:2014-05-20 20:46:08

标签: sql sql-update teradata

标题不像我希望的那样具有描述性。 这是我的任务:我有17个数字,每个都遵循这种格式12345-67(即06037-11)我需要的数字/字符串是123456-78。在第6位,我插入一个0。

为了找到这些数字,我使用了这个查询:

select number
 from schema.table
 where number like '%-%'
 and length(trim(number)) > 1
 and length(substr(number, 1, position('-' in policy_number))) < 7
 order by policy_number;  

如何在不单独完成各项的情况下以类似方式更新所有内容?

编辑:我正在使用Teradata

记录示例:

06037-11
24188-18
25559-18

2 个答案:

答案 0 :(得分:1)

类似

update schema.table
set number = substr(number,1,5) + '0' + substr(number,6,4)
 where number like '%-%'
 and length(trim(number)) > 1
 and length(substr(number, 1, position('-' in policy_number))) < 7

答案 1 :(得分:1)

这里有一个使用_通配符的选项,它匹配任何单个字符:

update yourtable 
set number = replace(number, '-', '0-')
where number like '_____-__'

这只会更新5个字符短划线2个字符的记录。