首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PATINDEX不识别点和逗号

PATINDEX不识别点和逗号
EN

Stack Overflow用户
提问于 2019-11-07 15:41:53
回答 1查看 242关注 0票数 0

我有一个应该包含电话号码的列,但它包含用户想要的任何内容。我需要创建一个更新来删除无效字符之后的所有字符。

为此,我使用正则表达式作为PATINDEX('%[^0-9+-/()" "]%', [MobilNr]),它似乎可以工作,直到我有一些数字作为+1235, 36446,令我惊讶的是,结果是0而不是6。另外,如果数字包含.,它将返回0。

PATINDEX是否忽略点(“.”)和逗号(“,")?PATINDEX是否会忽略其他字符?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 17:19:45

这不是因为PATINDEX忽略了逗号和圆点,而是你的模式造成了这个问题。

对于PATINDEX,连字符(-)有特殊的含义-它实际上是一个运算符,表示包含范围-就像0-9表示09之间的所有数字-所以当您执行+-/时,它意味着+/之间的所有字符(当然包括在内)。逗号和点字符都在这个范围内,这就是为什么你会得到这样的结果。

修复模式很简单:要么使用|作为逻辑或,要么简单地将连字符移到模式的末尾:

代码语言:javascript
复制
SELECT PATINDEX('%[^0-9/()" "+-]%', '+1235, 36446') -- Result: 6
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58744048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档