如何从db2表

时间:2017-08-17 06:17:02

标签: sql db2

我在第6列之后有一个数据为零的列

我想删除数据中第6个管道后的前导零。

如果有任何办法,请告诉我。我尝试将substrTrim一起使用但不起作用。

3 个答案:

答案 0 :(得分:0)

假设您的列名为COL,则以下内容应起作用:

CONCAT(SUBSTR(1,INSTR(COL,'|', 1,5)), LTRIM(SUBSTR(INSTR(COL,'|', 1,5)+1)),'0'))

答案 1 :(得分:0)

根据您当前的数据假设您只需用|00替换|的每一个匹配项,您就可以使用REPLACE函数来实现。

    SELECT 'TMB|MLE020828585|74384911WA3S|="''07300058"|74384911|0013' AS Current_String,
           replace('TMB|MLE020828585|74384911WA3S|="''07300058"|74384911|0013', '|00', '|') AS result_String

您可以将上面的硬编码值替换为列名。

以上查询生成如下结果。

Current_String                                               |                     result_String
------------------------------------------------------------------------------------------------------------------------
TMB|MLE020828585|74384911WA3S|="'07300058"|74384911|0013     |   TMB|MLE020828585|74384911WA3S|="'07300058"|74384911|13

希望这会有所帮助。

答案 2 :(得分:0)

Oleg在使用INSTR()方面是正确的,我就是这样做的。但他错过了一些论点。另外,我无法让ltrim工作,所以我将它转换为int。我使用以下方法测试并更新了我的表格数据:

更新mytable SET mycolumn = Substr(mycolumn,1,Instr(mycolumn,' |',1,5))   || CAST(Substr(mycolumn,Instr(mycolumn,' |',1,5)+ 1)AS INT)