ユーザーがアドレスを検索できるデータベースがあります。ただし、データベースの一部のアドレスは範囲内にリストされています。たとえば、120-125のメインstはデータベースのレコードになります。ユーザーが123 Main Stを検索した場合、120-125のレコードを表示する方法はありますか? BETWEEN句が正しく動作するかどうかわからないので、これはすべての範囲を含めるためには動的である必要があります。何か案は?任意の範囲内の値を検索する
答えて
このような種類のデータには、多くの頭痛や頭痛の種を保存して専用のフィールドを作成します。あなたも、アドレスを解析し、トリガー(挿入した後、更新)の助けを借りて、これらのフィールドを埋める機能を作成することができます:
create function rangeFrom(@address varchar(100)) returns int as
begin
declare @pos int
set @address = replace(@address, ' ', '') + '.'
set @pos = patindex('%[0-9]%', @address)
if @pos > 0
begin
set @address = right(@address, len(@address) - @pos + 1)
set @pos = patindex('%[0-9][^0-9]%', @address)
return left(@address, @pos)
end
return null
end
-- ------------------------------------------------------------
create function rangeTo(@address varchar(100)) returns int as
begin
declare @pos int
set @address = replace(@address, ' ', '') + '.'
set @pos = patindex('%[0-9]-[0-9]%', @address)
if @pos > 0
begin
set @address = right(@address, len(@address) - @pos - 1)
set @pos = patindex('%[0-9][^0-9]%', @address)
return left(@address, @pos)
end
return null
end
その後、あなたは(あなたのトリガーに例えば)それらを呼び出すことができます。
select dbo.rangeFrom('120-125 main st') -- returns 120
select dbo.rangeTo('120-125 main st') -- returns 125
このように、BETWEEN演算子で使用できる実際のフィールドがあります。
ありがとう、私はこれに少し新しいですので、構文がどのように行くのか分かりません。これらの関数はどちらもストアドプロシージャとして作成し、実際のSQLクエリで正しく呼び出す必要がありますか? – Aeonstrife
@Aeonstrife:彼らはあなたがこれらのステートメントを実行して、データベース内の[ユーザー定義関数](http://msdn.microsoft.com/en-us/library/ms191007.aspx)(保管されていない手順)として作成されます。その後、トリガーなどで使用するか、行を挿入または更新するときに明示的に使用できます。 – Tomalak
正規表現を使用して、アドレス行から "x-yメインストリート"からxとyの値を抽出し、検索値が抽出された2つの値の間にあるかどうかを確認できます。
地理的に同じ通りのレコードを探していることを確認するには、ZIP /郵便番号で一致してください(範囲が重複しないようにする必要があります)。
あなたが別々の列に定義された範囲を持たずに、これを行うことができるようになりますどのように他わからないが、私の解決策は、華麗ではないですが、あなたは、文字列操作を使用するように強制している場合、うまくいけば、それはあなたを助けます。
- 1. 月と日(任意の年)のMySql日付範囲の検索
- 2. 範囲内の値を検索
- 3. 範囲内のバイナリ検索ツリーフィルタ値
- 4. プロパティ内の任意の値を持つページを検索する
- 5. 範囲内を検索するアルゴリズム
- 6. 最小範囲と最大範囲のテーブル内の値の場所の検索
- 7. Excel VBA - 範囲内の最高値と次の値の検索
- 8. ストア任意の値とクラスの特定の範囲の値が
- 9. 範囲内の名前を検索
- 10. MATLAB:範囲内の関数を検索
- 11. 任意のスナップポイントを持つ範囲スライダ
- 12. 範囲内の範囲内のノードの数0(LogN)内のバイナリ検索ツリー
- 13. sympy任意関数の範囲
- 14. PostgreSQL JSONクイック検索(任意のキーからの検索値)
- 15. Octreeで指定された範囲内で範囲を検索
- 16. 責任範囲の範囲
- 17. 検索セルの範囲内の値とコア
- 18. 範囲から一意の値を検索して出力するループ
- 19. PDF任意のテーブル(理由の範囲内)幅
- 20. 検索ボックスウェブパーツ - デフォルトのカスタム検索範囲
- 21. 任意フィールドのJson検索
- 22. CouchBaseの範囲の検索
- 23. 検索範囲ゼロカウント
- 24. 別の範囲で範囲条件を検索する
- 25. MySQLの範囲内での結果と任意の範囲内での最初の発生
- 26. Excel VBA対応範囲の最小値から最大値に基づいて範囲内のセルアドレスを検索
- 27. Zillowの範囲検索
- 28. 重複範囲の検索
- 29. Django Haystack:MultiValueFieldの範囲検索
- 30. ブルートゥースの範囲内のデバイスを検索するUWP
あなたは、あなたのデータがどのように見えているのか、どんなことが好きなのかのサンプルを提供できますか?ありがとう! – jworrin