字符串比较中的ANSI标准

本文探讨了ANSI-89与ANSI-92两种模式匹配标准在字符串比较中的应用,详细解释了不同通配符的使用场景,如'*'、'?'、'_'、'%'等,并介绍了如何在Access中选择兼容性。同时,文章还讲解了字符列表、范围匹配及模式匹配的特殊规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ANSI-89与ANSI-92

在讨论所有可用的各种类型的模式匹配之前,有两种用于模式匹配的主要类型的ANSI标准(匹配零个或多个字符或仅匹配单个字符):

ANSI-89-主要仅由Jet SQL使用ANSI-92-主要由SQL Server和其他成人产品使用

在更高版本的Access中,现在可以选择

可以选择ANSI-92兼容性,而不是ANSI-89兼容性。 在字符串比较中使用通配符

内置模式匹配为进行字符串比较提供了一种多功能的工具。 下表显示了可与

运算符和它们匹配的数字或字符串数​​。 表达式中的模式匹配字符

任何单个字符-'?' [

ANSI-89 ]或'_'(下划线)[ ANSI-92 ]

零个或多个字符-'*'[

ANSI-89 ]或'%'[ ANSI-92 ]

任意一位数字(0-9)-'#'

字符列表中找到的任何单个字符-[字符列表]

字符列表中找不到任何单个字符-[!charlist]

您可以使用括在方括号([])中的一组一个或多个字符(字符列表)来匹配表达式中的任何单个字符,并且字符列表可以包括ANSI字符集中的几乎所有字符,包括数字。 仅当放在方括号中时,才可以使用特殊字符打开方括号([),问号(?),下划线(_),星号(*),百分号(%)和数字符号(#)进行直接匹配。 您不能在组内使用右括号(])进行自我匹配,但可以在组外将其用作单个字符。

除了用括号括起来的简单字符列表之外,charlist还可通过使用连字符(-)分隔范围的上限和下限来指定字符范围。 例如,如果表达式中的相应字符位置包含A到Z范围内的任何大写字母,则在模式中使用[AZ]会导致匹配。您可以在方括号内包括多个范围而不限制范围。 例如,[a-zA-Z0-9]与任何字母数字字符匹配。

重要的是要注意

ANSI-92 SQL通配符(%)和(_)仅在Microsoft®Jet版本4.X和Microsoft OLE DB Provider for Jet中可用。 如果通过Microsoft Access或DAO使用它们,它们将被视为文字。

模式匹配的其他重要规则包括:

字符列表开头的感叹号(!)表示如果在表达式中找到了字符列表以外的任何字符,则会进行匹配。 在括号外使用时,感叹号会与其自身匹配。

您可以在字符列表的开头(如果使用了感叹号,则在其后)或字符列表的末尾使用连字符(-)进行匹配。 在任何其他位置,连字符标识一系列ANSI字符。

指定字符范围时,字符必须以升序排列(AZ或0-100)。 [AZ]是有效模式,但[ZA]不是有效模式。

字符序列[]被忽略; 它被认为是零长度的字符串(“”)。

From: https://bytes.com/topic/access/insights/677282-ansi-standards-string-comparisons

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值