2016-07-15 149 views
1

這有點複雜,但希望它是有道理的。我試圖找出是否有一個查詢或一些技巧可用於執行以下操作。 (我實際上使用Netsuite,所以它不完全是SQL,但它們支持SQL命令的一個基本子集,所以如果可能的話,我可以找到一種方法來做到這一點。)反向SQL查詢子查詢

我有一個表記錄在Netsuite中),其中包含我們用作欺詐檢查的客戶地址的幾個字段。欺詐客戶傾向於通過添加虛假套件號碼或其他後綴來使用同一虛假地址的各種咒語。我們所做的就是在我們的表格中設置我們的記錄,使其具有街道地址的共同部分(如「123 Main Street」),而沒有額外的東西(例如「套房12345」)。當發現欺詐訂單時,我們將客戶輸入的地址作爲參考,並嘗試查找表中的任何記錄,其中表格的街道地址字段本身就是客戶在訂單上輸入的地址的子字符串。這是從一個典型的子字符串搜索的倒退,其中你會試圖找到一個表中的字段包含一個子字符串的記錄。相反,我試圖找到表中的任何記錄,其中字段是某個常量字符串的子字符串。

這是否有意義?是否有可能或將要我自己做一些魔術?

+0

向我們展示一些樣本數據和預期結果,我們將盡我們的魔力。請閱讀[** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/),瞭解如何提高您的問題質量並獲得更好的答案。 –

回答

1

以下是我爲類似情況所做的工作。假設您的兩個欺詐地址位於一個fraud_addresses表中,並帶有一個street_address列。爲了清楚起見,我將假設您使用@newaddress參數來執行此操作;如果你有一堆地址需要驗證,可以對其進行修改。

select * 
    from fraud_addresses f 
where charindex(f.street_address,@newaddress) > 0; 

這列出了可以作爲新地址的子字符串找到的所有欺詐地址。

+0

我相信你可能是對的,這將工作。我曾看過CHARINDEX函數,但認爲它只能在一個方向上工作。起初我認爲這不是一種可用的功能,但我實際上在Netsuite中有一種名爲「INSTR」的類似功能。我只需要找到一種方法來使用SuiteScript,但我認爲我正處在正確的軌道上。謝謝! – BrianVPS