在第一个非字母数字之前抓取字母数字字符

时间:2013-02-07 20:11:09

标签: ms-access

我很擅长访问。我的专栏中有一个与此类似的数据:

JONES/KEN

SMITH/TAMMY

MILLER FRED

PICARD.JOHN

我可以在第一个非字母数字之前抓住字母吗?

所以我的结果是:

JONES

SMITH

MILER

PICARD

2 个答案:

答案 0 :(得分:0)

不幸的是,我不知道某些语言中提供的“Word”功能。我会使用Instr进行强力检查,然后使用Mid来提取代码。这个结构对于获得各种角色非常复杂。

我已经使用了iif函数并将其嵌套 - 这是基本格式:

iif (instr (fieldname,"{the character}") > 0, 
     mid(fieldname,1, instr(fieldname,"{the character}")-1, 
     fieldname{or go further into ifs}) 

使用带有客户名称的样本数据作为字段和3个条件 - 空格,/和句点。它确实有效,但它很难看 - 你必须向右滚动才能获得所有东西:

ShortName: IIf(InStr(1,[client_name]," ")>0,
               mid(client_name,1,InStr(1,[client_name]," ")-1),
               IIf(InStr(1,[client_name],"/")>0,
                   mid(client_name,1,InStr(1,[client_name],"/")-1),
                            IIf(InStr(1,[client_name],".")>0,
                            mid(client_name,1,InStr(1,client_name],".")-1),
                            Client_Name)))

根据您的表格将其放入查询中。

答案 1 :(得分:0)

派生表怎么样:

SELECT Left([Surname],InStr([Surname],[NonAlpha])-1) AS LeftName, 
       MainTable.Surname
FROM MainTable, 
   (SELECT " " As NonAlpha From Table1
    UNION
    SELECT "." As NonAlpha From Table1
    UNION
    SELECT "," As NonAlpha From Table1
    UNION
    SELECT "/" As NonAlpha From Table1)  AS n
WHERE (((MainTable.Surname) Like "*" & [nonalpha] & "*"));

Table1是一个临时表,它确实包含记录,但查询只会是 返回四个指定的行(,。/)
Maintable是具有字段Surname的表,该字段是要拆分的字段。