2017-10-23 12 views
0

私は各状態の略語とフルネームが混在した状態名の列を持っています。私はフォーマットを標準化できる方法でクエリを実行する必要があります。 「フルネーム」または略語のいずれか。データベース内のロケーション名の不一致

+0

おそらくRegexにとっては良い仕事です。この投稿をチェックアウト:https://stackoverflow.com/questions/21587805/trying-to-come-up-with-regex-for-us-states-abbreviation-and-full-name-mixed-all –

+1

[DBMS ](https://en.wikipedia.org/wiki/DBMS)製品を使用していますか? Postgres?オラクル? "_SQL_"はクエリ言語であり、特定のデータベース製品の名前ではありません。 –

+0

サンプルテーブルのデータと予想される結果を追加します。 (書式付きテキストで、画像ではありません) – jarlh

答えて

0

あなたは関数のように使用することができます。ステートメントは次のようになります。

SELECT * FROM TABLE_NAME WHERE STATE_COLUMN LIKE "STATE NAME" OR LIKE "STATE ABBREVIATIONS" 

うまくいけばうまくいきます。

+0

なぜワイルドカードを使用しないで「好き」ですか? '='の何が問題なの? – jarlh

+1

SQLでは、文字列定数を一重引用符で囲む必要があります。二重引用符は識別子のためのものです。 –

+0

これは構文的に間違っており、あまり役に立たないようです。どのように受け入れられますか? –

0

私はこのように、一時テーブルを構築することをお勧め:

State, Abbreviation 
Alabama, AL 
Alaska, AK 
Arizona, AZ 

そして、あなたのテーブルtに一時テーブルに参加:

SELECT temp.state 
FROM t 
INNER JOIN temp ON t.state IN (temp.state, temp.abbreviation) 
+0

ありがとうございました。この方法は非常に便利です。唯一の問題は、多くの州があることです。そして、様々な国の。この問題に取り組む方法はありますか? – user8821126

+0

UNIONをスキップし、代わりに '... INNER JOIN temp on t.state IN(temp.state、temp.abbreviation)'を実行してください。 – jarlh

+0

@ jarlh。あなたはこの投稿をどう思いますか?https://stackoverflow.com/questions/5901791/is-having-an-or-in-an-inner-join-condition-a-bad-idea – kbball

関連する問題