Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

查询多个字符串在另一个字符串最早出现的位置

chinasa  发表于:2021-03-16 14:19:45  
复制

想请教一下,如何查询多个字符串在另一个字符串最早出现的位置。比如:

表1:

字段A:

张志管理员年底考评为优

西出阳关无故人版主是个优秀员工

麦田管理员好久没出现了

YMK普通会员能力很强


希望输出结果:

张志

西出阳关无故人

麦田

YMK


上述信息中,有“管理员”、“版主”、“普通会员”等关键词,我需要取这些关键词前面的内容,但现在希望能有个简单的方法来获取。



weizhi=instr(instr(instr(字段A,"管理员"),"版主"),"普通会员")    '语法错误,就当做示意吧。

wenben=mid(字段A,1,weizhi)

除了采取循环以外,不知是否有更简便的方法比如:in("管理与","版主"........)等形式。

 

Top
西出阳关无故人 发表于:2021-03-16 18:56:58

用自定义函数吧?起码查询语法简单:

Public Function BeforeKeyCode(exp As String) As String
    Dim Keys, i, num As Long
    Keys = Split("管理员,版主,普通会员", ",")'你还可以增加很多其他关键字哦
    For i = 0 To UBound(Keys)
        If InStr(1, exp, Keys(i)) > 0 Then
            num = InStr(1, exp, Keys(i))
            Exit For
        End If
    Next i
    If num < 1 Then
        BeforeKeyCode = ""
    Else
        BeforeKeyCode = Left(exp, num - 1)
    End If
End Function

查询:

select BeforeKeyCode(字段A),字段B FROM 表1



chinasa 发表于:2021-03-17 10:19:19
万分感谢~~

总记录:2篇  页次:1/1 9 1 :