2012-09-14 58 views
2

有人可以給我一個例子,說明如何使用SQL命令在郵政編碼字段中輸入破折號「 - 」後的任何東西嗎?如何使用MySQL REGEXP從Zip Code字段中刪除-XXXX?

例如,更改任何這樣的:

XXXXX-X 
XXXXX- 
XXXXX-XX 
XXXXX-XXXX 

這樣:

XXXXX 

感謝您的例子。我還需要刪除數據庫中「 - 」,「-X」,「-XXXX」等的任何實例,以便郵政編碼只包含五位數字。有人可以舉一個例子嗎?

回答

1

而不是使用正則表達式,你可以使用MySQL的SUBSTRING_INDEX()方法:

SELECT SUBSTRING_INDEX(zip_code, '-', 1) FROM your_table 

編輯(支持更新)

UPDATE your_table SET zip_code = SUBSTRING_INDEX(zip_code, '-', 1); 

我建議創建第二列,也許zip_code_short運行SET zip_code_short =而不是覆蓋主要DAT一個 - 只是爲了確保它不會首先導致任何錯誤(如果可行)。

+0

謝謝。請參閱我上面的帖子更新。我還需要一種方法將其從數據庫中的條目中刪除(而不僅僅是選擇)。 – Zoolander

+0

@Zoolander更新回答支持'UPDATE' – newfurniturey

4

鑑於您字段命名爲zip,然後就這樣做:

SELECT SUBSTRING_INDEX(zip, '-', 1) as zip 

,將返回你想要什麼

要更新表中的數據,你可以這樣做:

update table set zip = SUBSTRING_INDEX(zip, '-', 1) where condition = foo 

這將只更新記錄匹配的一些條件,如果要全部更新刪除where部分

+0

謝謝。請參閱我上面的帖子更新。我還需要一種方法將其從數據庫中的條目中刪除(而不僅僅是選擇)。 – Zoolander