如何编写SQL查询以更新符合条件的所有行然后再添加另一个字符内联

时间:2017-04-24 19:39:30

标签: sql db2

我已经编写了一个查询,当条目的长度为<时,我将在表A中搜索column1。 8个字符。查询通常是这样的:

SELECT A.Column1, A.Column2
FROM SCHEMA.A as A
WHERE length(A.Column1) < '8';

这让我得到了我期望的所有结果。现在我要做的是每个结果中的每一个我想在每个结果中的第4个字符后添加一个' - '字符。例如,如果我的原始查询生成了一个column1为1234567的行,我希望它更新为1234-567。对于所有返回的行都是如此。我可以使用java代码执行此操作,但我希望编写一个sql脚本,因为它更快,不会丢弃。我查看了各种db2 Update语法示例,但没有显示我正在寻找的内容。请帮忙!

2 个答案:

答案 0 :(得分:2)

您可以使用INSERT() function

UPDATE SCHEMA.A
    SET Column1 = INSERT(Column1, 5, 0, '-')
    WHERE length(A.Column1) < 8;

在执行更新之前使用SELECT尝试此操作。

此外,length()会返回一个数字。比较值应该是数字,而不是字符串。

答案 1 :(得分:1)

我想你不想添加&#39; - &#39;如果你的列长度是&lt; 4 示例:123你不想要123-,而1234你不想要1234-然后你必须纠正你喜欢它的地方:

UPDATE SCHEMA.A
SET Column1 = left(Column1, 4) || '-' || substr(Column1, 5)
WHERE length(Column1) between 4 and 7;