1

我需要运行一个查询,该查询将从具有 2 种数据类型的字段中提取信息。

字段为地址,数据为 123 大道,bb@yahoo.com。

我需要创建 2 个字段,一个用于电子邮件,一个 STaddress 来自表客户和字段地址?

任何人都可以帮助.. 它的访问和 vb 查询

我想到了这个

选择customer.address from customer where address like " @ "

但我仍然需要将地址字段的数据显示到 2 个不同的字段...

4

4 回答 4

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 回答
1

这是获取两个不同字段的查询:

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 回答
0

如果您在同一字段中有街道地址和电子邮件地址,并且想要拆分它们,请使用此地址。
我们会将您的原始字段称为 Addy,并将新字段称为 Street & Email。

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

它的作用是查找@,然后向后查找第一个空格。第一个函数占据该空间的每个左侧并称之为 Street,而第二个函数占据右侧的所有空间。

该函数实际上是嵌套在一起的 3 个函数。为了真正了解它在做什么,我将对其进行剖析。

I = InStr(Addy, "@")
J = InStrRev(Addy, " ", I)
Street = Left(Addy,J-1)
于 2013-03-03T03:10:02.033 回答
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;

您可能需要调整“定位”功能的名称 - 我不确定它在访问数据库中是否相同。

于 2013-03-02T22:14:24.093 回答