2011-11-29 50 views
0

夥計們在幾天我有一個考試(期中考試),所以我試圖執行每個可能的考試,可能是中期的,假設我們有僱員表,其中給出了電話號碼這種形式abc.edf.ghi(這些都是數字不是字符串),我怎麼能列出這些員工誰的電話號碼包含edf?我不認爲我們可以使用子字符串函數,因爲它是數字,我正確嗎?另外我不能像C++一樣執行除數(除以100,mod 100等),所以請幫助我,對不起,如果我的問題太過於荒謬。我只需要練習。根據電話號碼從數據庫中選擇

回答

1

Oracle sayssubstr僅適用於字符串,但對於定義爲NUMBER數據類型的列,您也可以使用substr

(假設PHONENUMBERCOLUMN的格式是abc.edf.ghi)

select * from YOURTABLE where substr(PHONENUMBERCOLUMN,5,3)='edf'

注:應該'edf',不edf,如果數據類型是比其他NUMBER。總是使用單引號以保證安全,列的數據類型是數字還是字符串(char,varchar,varchar2等)

0

在MySQL中,您可以嘗試SUBSTRING()函數。如果電話號碼的格式符合您的要求,則必須是varchar而非INT。

對於Oracle使用substr()

+0

它是oracle,所以類似於substr是嗎? –

+0

@dato thats correct –

+0

和什麼將範圍substr(phonenumber,5,8)或我已經嘗試,但不起作用 –

1

不要以爲電話號碼的錯誤是一個。電話號碼是一個通常由數字組成的字符串。

想象一下以一些零開頭的電話號碼。如果你將它作爲一個數字存儲,它們將被截斷,而它們可能很重要,可能會有所作爲。將它存儲爲一個字符串會使其更安全。

此外,將其存儲爲字符串使您可以使用SUBSTR和其他類似命名的功能,並做或多或少的相同的事情,這應該可以解決您的問題。