1

2 種類のデータを持つフィールドから情報を取得するクエリを実行する必要があります。

フィールドは住所で、データは 123 avenue、bb@yahoo.com です。

2 つのフィールドをメール用に 1 つと、テーブル customer とフィールド アドレスから 1 つの STaddress を作成する必要がありますか?

誰でも私は支援することができます..そのアクセスとvbクエリ

私はこれについて考えました

" @ "のようなアドレスの customer から customer.address を選択します。

それでも、住所フィールドのデータを2つの異なるフィールドに表示する必要があります...

4

4 に答える 4

1

2つの異なるフィールドをフェッチするクエリは次のとおりです。

select iif(field like '*@*', field, NULL) as email,
       iif(field like '*@*, NULL, field) as address
from t

Accessでの使用法はlike、他のデータベースとは少し異なります。

このロジックを使用してビューを作成することをお勧めします。実際にテーブルを変更する場合は、列を追加して、上記のようなロジックを入力する必要があります。

于 2013-03-02T22:15:31.717 に答える
1

この質問とあなたの重複した質問に基づいて、あなたのテーブルには住所とメールアドレスの両方を含むフィールドがあり、それらを別々のフィールドに分割したいと考えています。

だからあなたのテーブルにはこれが含まれています...

YourField
------------------------------
1234 ave willie haha@yahoo.com
123 avenue bb@yahoo.com

そして、あなたはこれが欲しい...

YourField                       street_address  email_address
------------------------------  --------------- --------------
1234 ave willie haha@yahoo.com  1234 ave willie haha@yahoo.com
123 avenue bb@yahoo.com         123 avenue      bb@yahoo.com

それが正しければ、InstrRev()関数を使用して の最後のスペースの位置を特定できますYourField。最後のスペースより前のすべてが番地です。以降はすべてメールアドレスです。

SELECT
    y.YourField,
    Left(y.YourField, InstrRev(y.YourField, ' ') -1) AS street_address,
    Mid(y.YourField, InstrRev(y.YourField, ' ') +1) AS email_address
FROM YourTable AS y;

期待される値のパターンWHEREを含む行のみをクエリが評価するようにするには、句を追加する必要がある場合があります。YourField

于 2013-03-03T17:42:31.883 に答える
0

次のようなものを試してください。

select *, 
       (case locate('@', address) when 0 then null else address) as email,
       (case locate('@', address) when 0 then address else null) as street
from table;

「locate」関数の名前を調整する必要があるかもしれません-アクセスデータベースで同じかどうかはわかりません。

于 2013-03-02T22:14:24.093 に答える
0

同じフィールドに住所とメール アドレスがあり、それらを分割したい場合は、これを使用します。
元のフィールドを Addy と呼び、新しいフィールドを Street & Email と呼びます。

SELECT Left(Addy, InStrRev(Addy, " ", InStr(Addy, "@")) - 1) AS Street, mid(Addy, InStrRev(Addy, " ", InStr(Addy, "@")) + 1) AS Email.

これが行うことは、@ を探してから、逆方向に移動して最初のスペースを探すことです。最初の関数はそのスペースのすべての左側を取り、Street と呼びますが、2 番目の関数は右側のすべてを取ります。

この関数は、実際には 3 つの関数が入れ子になっています。それが何をしているのかを本当に理解するために、私はそれを分析します。

I = InStr(Addy, "@")
J = InStrRev(Addy, " ", I)
Street = Left(Addy,J-1)
于 2013-03-03T03:10:02.033 に答える