【问题标题】:DB2 update - remove all characters after white spaceDB2 更新 - 删除空格后的所有字符
【发布时间】:2013-04-09 02:07:23
【问题描述】:
Select Substr(<<COLUMN NAME>>, 1,(PosStr(<<COLUMNNAME>>, ' ') -1)) 
From <<TABLE NAME>>;

这里的这个语句有助于删除空格,以及它后面的所有字符 - 这很好,这就是我要找的......但它是一个选择语句,并且只返回一个列表。

请问有人可以将其更改为 UPDATE 语句吗? (DB2)


更多信息...例如,如果我有的话,

NAME

teddy longmore

theadore rosavelt

some body

我想删除第一个空白之后的所有字符

如何使用 SQL 来做到这一点?

【问题讨论】:

    标签: sql db2 whitespace removing-whitespace


    【解决方案1】:

    你几乎已经在那里了,只需将你已经拥有的命令添加到UPDATE

    UPDATE your_table
       SET name = SUBSTR(name, 1,(POSSTR(name, ' ') -1));
    

    演示:

    DECLARE GLOBAL TEMPORARY TABLE SESSION.TEXT_TEST (
        NAME VARCHAR(50)
    ) ON COMMIT PRESERVE ROWS;
    
    INSERT INTO SESSION.TEXT_TEST (
        SELECT 'teddy longmore' FROM SYSIBM.SYSDUMMY1 UNION ALL 
        SELECT 'theadore rosavelt' FROM SYSIBM.SYSDUMMY1 UNION ALL 
        SELECT 'some body' FROM SYSIBM.SYSDUMMY1
    );
    
    SELECT name
    FROM SESSION.TEXT_TEST;
    
    UPDATE SESSION.TEXT_TEST
       SET NAME = SUBSTR(name, 1,(POSSTR(name, ' ') -1));
    
    SELECT name
    FROM SESSION.TEXT_TEST;
    

    【讨论】:

    • 为什么要使用 SELECT UNION SELECT UNION SELECT 进行 INSERT,而 VALUES 会更简单(也更高效)
    • @WarrenT:哈哈,最近一直在使用 Mainframe DB2,其中从 values 子句插入不可用......这在 LUW 上会很棒(我不使用 iSeries,所以我可以'不谈那个)
    • 看起来你有INSERT by VALUE 用于单行,至少在 v10 中。我不确定它可以追溯到多远。在 i 上,我们可以使用 VALUES (row),(row),... 我认为 LUW 也是如此。我们经常觉得自己像被遗忘的孩子,但事实证明我们有一些你们没有的更酷的东西。所以我想这比它有时感觉的要多一点。 ;-)
    • 是的,您只能在 VALUE 子句中执行一行。有多行插入,但只能在应用程序中使用,使用主机数组。我在 DB2 z/OS 上错过的一件大事。 :(
    【解决方案2】:

    语法是

    UPDATE mytable
        SET col = expression
        WHERE conditional-expression
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 2012-03-08
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多