Oracle 11g - 解析sql查询中列的单词

时间:2013-10-07 15:56:23

标签: sql oracle

我正在尝试更新CITY字段。这是针对加拿大的地址,但我会为我的问题保持简单。 CITY字段只包含一个单词,其中STATE字段包含多个单词(通常不超过3个单词用空格分隔。),但大多数STATE值包含两个用空格分隔的单词。

示例:CITY将显示NEW,STATE将显示YORK NY

现在我正在尝试用它来更新CITY以显示纽约。还没有到达我需要更新STATE的部分。我想宝贝步骤。

我拥有什么:

UPDATE TABLE
SET CITY = CITY || ' ' || SUBSTR(STATE, 1, INSTR(STATE, ' '))
WHERE SUBSTR(STATE, 1, INSTR(STATE, ' ')) IS NOT NULL;


当我跑步时:

SELECT CITY || ' ' || SUBSTR(STATE, 1, INSTR(STATE, ' '))
WHERE SUBSTR(STATE, 1, INSTR(STATE, ' ')) IS NOT NULL; 


我得到了STATE字段的第一个字,所以它告诉我,我有点正常。

有关此的任何信息将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您正在尝试更正数据(虽然我而不是100% - 如果是这种情况)那么您的代码似乎没问题。

创建表t1(city varchar2(100),state varchar2(100)) 插入t1值('NEW','YORK NY')

更新t1 set city = city ||' '|| SUBSTR(STATE,1,INSTR(STATE,'')) WHERE SUBSTR(STATE,1,INSTR(STATE,''))不是NULL;

现在城市专栏:纽约

从t1选择状态,SUBSTR(状态,长度(状态)-1,INSTR(状态,'')) WHERE SUBSTR(STATE,1,INSTR(STATE,''))不是NULL;