SQL服务器和patindex未预期的结果

时间:2015-06-07 19:44:01

标签: sql-server patindex

我试图用NANP格式验证电话号码。

我正在使用此代码

 patindex('+1[2–9][0-9][0-9][2–9][0-9][0-9][0-9][0-9][0-9][0-9]', n)

但是没有按预期工作,一些应该有效的数字(如+14104536330)与表达式不匹配。

我已使用示例代码创建了SQL Fiddle。 我的patindex表达有什么问题?

1 个答案:

答案 0 :(得分:7)

将您的字符串复制到十六进制编辑器,[2-9]显示为:

+1[2â9][0-9][0-9][2â9][0-9][0-9][0-9][0-9][0-9][0-9]

2到9之间的十六进制代码为E2 80 93,即UTF-8 for "en dash"。所以问题基本上就是你已经进入了一个有趣的破折号版本。当您复制/粘贴Microsoft自动更正环境(如Outlook,Word或Excel)时,可能会发生这种情况。自动更正将以无声方式将破折号升级为漂亮的破折号。