2016-07-06 188 views
1

我在同一列中有两个不同的值。 示例:ColumnName = COUNTY 示例数据:“NSW New South Wales” 如何设置更新/替换查询以删除NSW缩写和空格并只有“New South Wales”? 我每个县都有不同的缩写,我讨厌逐个做一个替换函数。SQL删除每个缩写字符串,直到一个空格

+1

是缩写总是3个字母? – splash58

+0

他们总是在那里吗? (也许你应该添加更多的样本表数据和预期的结果。) – jarlh

+0

缩写的最大值是3个字母。 – Angie

回答

1

尝试使用SUBSTRING_INDEXREPLACE()

UPDATE YourTable t 
SET t.YourColumn = LTRIM(REPLACE(t.YourColumn,SUBSTRING_INDEX(t.YourColumn,' ',1),'')) 

对于SQL-Server一起使用SUBSTRINGCHARINDEX

UPDATE YourTable t 
SET t.yourColumn = SUBSTRING(t.YourColumn,CHARINDEX(t.YourColumn,' ') + 1,100) 
+0

对不起 - 您还必须用CONCAT CONCAT(SUBSTRING_INDEX(Column,'',1),'')CONCAT reult;删除第一个空格 –

+0

是的,正确的,使用'LTRIM'修复:) @BerndBuffen。 – sagi

+0

Ehm ..我正在使用2014 SQL mgmt工作室,我收到以下内容 'SUBSTRING_INDEX'不是公认的内置函数名称。 – Angie

0

SELECT SUBSTR(从位置(”'中的数据的数据)1)FROM测试。 randomdata; (数据中的'''')+1);}}}

位置+ 1保护没有空格的字符串;)

0

试试这个

UPDATE `tabl1` SET `col1` = TRIM(REPLACE("NSW New South Wales","NSW", "")) WHERE `col1` LIKE 'NSW%' 

或者这样:

UPDATE `tabl1` `t` 
    SET `t`.`col1` = TRIM(
    REPLACE(
     `t`.`col1`, 
     SUBSTRING_INDEX(`t`.`col1`, ' ', 1), 
     "" 
    ) 
) 
WHERE LENGTH(SUBSTRING_INDEX(`t`.`col1`, ' ', 1)) <= 3 
+0

对不起,但这只取代当前的数据,我试图将每个缩写替换为最多3个字符长度,直到在同一个字段上遇到的第一个空间。 – Angie

+0

@Angie我更新了我的答案。我不是为了评估而做的。最主要的是帮助人们解决他的问题。 也许别人会需要我的回答:) –

+0

谢谢:)为了理智,尝试了这个以及它确实有效。 – Angie