2011-10-12 60 views
0

我試圖尋找一個表視圖中的所有地址,屬於某個郵政編碼列表(500層+郵編)SQL服務器搜索過程

通過不同的搜索答案,我發現一些非常接近我在尋找的東西this StackPost

問題是我正在處理一個視圖(沒有全文搜索),而不是1對1的值。

我試圖做線沿線的東西:

set @sql = "SELECT * FROM viewTABLE 
      WHERE CONTAINS(Address, '"+replace(@list, ',', ' OR ')+"')" 

但上面提到不工作 - 我可以創建包含郵政編碼列表如果讓事情變得簡單的表格,但每欄'地址'必須與郵政編碼列表進行比較。

任何幫助非常感謝!

回答

0

您可以修改現有的代碼,做這樣的事情與LIKE聲明:

set @sql=" 
    SELECT * 
     FROM viewTABLE 
    WHERE Address LIKE '%"+replace(@list, ",", "%' OR Address LIKE '%")+"%'" 

這將產生@sql這樣的:

SELECT * 
    FROM viewTABLE 
WHERE Address LIKE '%12345%' OR Address LIKE '%22345%' OR Address Like '%55314%' 
     -- etc. 

但是它會更容易,如果郵編名單在一張桌子上:

SELECT * 
    FROM viewTABLE v 
WHERE EXISTS 
    (SELECT * FROM zipCodeList z 
    WHERE v.Address LIKE '%'+z.ZipCode+'%') 
+0

這樣一個簡單的答案...呃 - 不知道我怎麼沒有考慮表中的郵編。謝謝MellaMokB – TeckniX

0

這不是答案,但這開始幫助您瞭解我的想法,幫助您解決問題。我設法隔離地址列開頭的數字值。如果你隔離了最後的字符,那麼你就在路上。

DECLARE @Customer TABLE 
    (
     NewPK INT IDENTITY(1, 1) , 
     CustomerAddress NVARCHAR(MAX) NOT NULL 
    ) 
INSERT INTO @Customer 
     (CustomerAddress 
     ) 
VALUES ('10 Fraley St # C, Kane, PA 16735' 
     ) 
INSERT INTO @Customer 
     (CustomerAddress 
     ) 
VALUES ('5611 Market St, Maru, PA 500' 
     ) 
INSERT INTO @Customer 
     (CustomerAddress 
     ) 
VALUES ('5644 N County Road 400 N, Scipio, IN 47273' 
     ) 
INSERT INTO @Customer 
     (CustomerAddress 
     ) 
VALUES ('79 Fraley St # A, Kane, PA 500' 
     ) 
INSERT INTO @Customer 
     (CustomerAddress 
     ) 
VALUES ('5195 N Camelot Way, North Vernon, IN 47265' 
     ) 
INSERT INTO @Customer 
     (CustomerAddress 
     ) 
VALUES ('79 Fraley St # A, Kane, PA 16735' 
     ) 

SELECT CustomerAddress , 
     CASE WHEN PATINDEX('%[^0-9]%', CustomerAddress) > 0 
      THEN SUBSTRING(CustomerAddress, 
          PATINDEX('%[0-9]%', CustomerAddress), 
          CHARINDEX(' ', CustomerAddress + SPACE(1), 
             PATINDEX('%[0-9]%', CustomerAddress))) 
      ELSE CustomerAddress 
     END AS 'numeric' 
FROM @Customer 
+0

感謝您的建議 - 我打算寫一些類似的東西,但是認爲必須有一個更簡單的查找。 – TeckniX