2015-10-05 104 views
0

我們有大量的商業名稱存儲在我們的數據庫中。我們的一些客戶進入SSN到names..i我試圖讓所有的企業名稱獲取句子中的單詞長度

問題:

找到名字每個字的長度,並返回任何人具有9的長度或11

實施例:

  1. 測試123456789 TEST2 - 這應該在結果

  2. 測試123456 test2-顯示 - 這不應該顯示

  3. 測試123456789 TEST2 12345678911 - 本應顯示

任何字在字符串中(數字,或字母或兩者的組合),其是9或11應returned..thank你

+3

歡迎堆棧溢出!你似乎在要求某人爲你寫一些代碼。堆棧溢出是一個問答網站,而不是代碼寫入服務。請[see here](http://stackoverflow.com/help/how-to-ask)學習如何編寫有效的問題。 –

+0

感謝@hcaelxxam它解決了我的problem..sorry如果我問的代碼,因爲我不知道從哪裏開始,我的想法是分割字符串成單詞,然後檢查其將採取的方式長的每個單詞的長度。 – showri

回答

3

你可以只使用等。百分號用於忽略列名稱前後的任何內容,用於確保前後有空格的空格,以及數字值的範圍搜索。

SELECT 
    * 
FROM 
    Table 
WHERE 
    Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %' 
    OR Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %' 

編輯:

其實,重讀最初的問題,它看起來像你不是在找只有9或11個數字字符串,但所有的字符串。在那種情況下@JoeMalpass可能是我想的更正確。

SELECT 
    * 
FROM 
    Table 
WHERE 
    --Surrounded by spaces 
    Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    --At the beginning with extra information after 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    --At the beginning with extra information before 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    --The entire column 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
+0

您還應該包含以子字符串開頭或結尾的版本(重複子句末尾沒有'%'的末尾處的'%')。 – CactusCake

+0

他也可以刪除空格,因爲%不包含任何內容,但公平點。然後 – hcaelxxam

+0

卸下空間將允許任何字符串,雖然長於911個字符... – CactusCake