2013-04-16 48 views
0
Select Substr(<<COLUMN NAME>>, 1,(PosStr(<<COLUMNNAME>>, ' ') -1)) 
From <<TABLE NAME>>; 

这里这个声明有助于消除空白区域,并在其后的所有字符 - 这是很好的,这就是我要找的...但它是一种选择statment,并且只返回一个列表。DB2更新 - 删除后的空白中的所有字符

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


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

NAME 

teddy longmore 

theadore rosavelt 

some body 

,我想删除所有的字符后的第一个WHITESPACE

我该怎么办使用SQL?

回答

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; 
+0

为什么你会插入SELECT UNION SELECT UNION SELECT,当VALUES会工作得如此简单(并且效率更高) oo) – WarrenT

+0

@WarrenT:hah,最近一直在使用大型机DB2,其中来自values子句的插入不可用......这对LUW来说会很棒(我不使用iSeries,所以我不能谈论这个) – bhamby

+0

看起来你已经[INSERT by VALUE](http://pic.dhe.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z10.doc.sqlref%2Fsrc% 2Ftpc%2Fdb2z_sql_insert.htm),至少在v10中。我不确定它有多远。在我,我们可以使用VALUES(row),(row),...我认为LUW也是如此。我们常常觉得自己就像被遗忘的孩子,但事实证明,我们有一些更酷的东西,你们不会。所以我想它比有时候感觉更平均。 ;-) – WarrenT

0

语法将

UPDATE mytable 
    SET col = expression 
    WHERE conditional-expression 
相关问题