Access交流中心

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

求一access查询写法

zjj  发表于:2013-03-16 11:38:02  
复制

条码
123z33A332
133322122
123z32112

要求在access中运行的写法,不需要在sqlserver中的写法

条码号段中,可能有些记录是含有英文字母的,如含有英文字母,将英文字母中最后一次出现位置后的数据截取出来,如果不带英文字母,则全字段取出

如上例,查询后:
条码
332
133322122
32112

 

Top
煮江品茶 发表于:2013-03-16 13:10:22

一、写两个自定义函数:

Function TestStr(ByVal Test_str As String, ByVal match_str As String) As Boolean
    '引用:Microsoft VBScript Regular Expressions 5.5
    '功能:是否匹配正则表达式
    '参数:Test_str--测试字符串,match_str--正则表达式
    Dim re As New regexp
    re.Pattern = match_str
    re.IgnoreCase = True
    re.Global = True
    TestStr = re.Test(Test_str)
    Set re = Nothing
End Function


Function ReplaceMatch(ByVal str As String, ByVal match_str As String, ByVal Rematch_str As String) As String
    '引用:Microsoft VBScript Regular Expressions 5.5
    '功能:替换字符串
    '参数:Test_str--测试字符串,match_str--源正则表达式,Rematch_str--替换的正则表达式
    Dim re As New regexp
    re.Pattern = match_str
    re.IgnoreCase = True
    re.Global = True
    ReplaceMatch = re.Replace(str, Rematch_str)
    Set re = Nothing
End Function

 

二、在查询中引用函数

假设要处理的字段名称为F1,则:

SELECT *, IIf(teststr([F1],"([a-z]|[A-Z])"),replacematch([F1],"(^.*(?:[a-z]|[A-Z]))(\d+$)","$2"),[F1]) AS 获取的数字
FROM 表名;

 

三、如果还不明白,请参见《无关紧要》一文。



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