这个简单的例子显示了我遇到的问题,但我不明白为什么......
我正在测试传递给我的字符串参数中第一个字符的位置,该字符是小写字母或大写字母、单个破折号或句点。
这两个模式匹配似乎检查相同的内容,但您自己运行此代码,它会打印 0,然后打印 3:
PRINT PATINDEX ( '%[a-z,A-Z,-,.]%', '16-82')
PRINT PATINDEX ( '%[-,a-z,A-Z,.]%', '16-82')
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它只起作用当破折号字符是我们检查的第一个字符时它才起作用。
这是一个错误吗?或者按照设计工作,但我错过了一些东西......我正在使用 SQL Server 2016,但我认为这并不重要。
字符组中的破折号可以扮演以下两个角色之一:
[-abc][a-z]。在您的特定示例中,字符组[a-z,A-Z,-,.]表示以下内容:
a到z,A到Z,从到 的所有内容, (即再次使用逗号)。.事实上,你可能想写[-a-zA-Z.]
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |