2013-06-20 34 views
0

我從同一列中選擇兩個子字符串,在這個例子中它是一個英國郵政編碼。如果它不是一個整數,選擇一個子字符串

我想要做的只是選擇第二個,如果它不是一個整數。

最終,我會將兩個子字符串(如果它不是整數)寫入一個新列。

SELECT SUBSTRING(postcode,1,1) AS one, SUBSTRING(postcode,2,1) AS two 

我可以圍繞第二個子字符串包裝IF語句嗎?

SELECT SUBSTRING(postcode,1,1) AS one, IF NOT INT(SUBSTRING(postcode,2,1)) AS two 

非常感謝

+3

您希望'case when ... else ... end':['CASE'](http://dev.mysql.com/doc/refman/5.5/en/case.html) – Rup

+2

您無法更改在運行時的輸出表,你可以使用'case'來代替'null'。 –

回答

1

可能的(假設你很高興與2列回來)。

SELECT SUBSTRING(postcode,1,1) AS one, IF(SUBSTRING(postcode,2,1) REGEXP '^-?[0-9]+$', NULL, SUBSTRING(postcode,2,1)) AS two 
FROM Postcodes 

可能會得到更多的凌亂一點,如果你想以應付更復雜的郵政編碼如EC1A 1BB,這取決於你是否要在返回的或不和在什麼情況下。

+0

太好了,謝謝你的幫助。我正在玩CASE聲明,但無法使正則表達式正常工作。太棒了。乾杯! – Boomfelled

相關問題