2016-07-06 184 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