请教SQL2008R2中如何用正则表达式来匹配查询筛选某个字段的数据呢
请问SQL2008R2中怎么用正则表达式来匹配查询筛选某个字段的数据呢?
请问SQL2008R2中怎么用正则表达式来匹配查询筛选某个字段的数据呢?
现在情况是这样的:
我有一张表,表里面有一个电话号码的字段,然后数据是乱的 手机号,座机什么的都有
需求就是查询出所有是手机号码的数据。
网上搜了下,有用创建函数的方式匹配,然后查询的时候调用函数判断-- 功能可以实现,但是查询数据很慢,不能接受。
求大神指点下。
------解决思路----------------------
查询速度主要看表的定义,尤其是索引。
最好是把字段电话号码(phone)做成int型,免去数字检查、有分隔符等麻烦,必须在phone上建索引。
用下面的语句应该很快了。
------解决思路----------------------
请问SQL2008R2中怎么用正则表达式来匹配查询筛选某个字段的数据呢?
现在情况是这样的:
我有一张表,表里面有一个电话号码的字段,然后数据是乱的 手机号,座机什么的都有
需求就是查询出所有是手机号码的数据。
网上搜了下,有用创建函数的方式匹配,然后查询的时候调用函数判断-- 功能可以实现,但是查询数据很慢,不能接受。
求大神指点下。
------解决思路----------------------
查询速度主要看表的定义,尤其是索引。
最好是把字段电话号码(phone)做成int型,免去数字检查、有分隔符等麻烦,必须在phone上建索引。
用下面的语句应该很快了。
SELECT phone
FROM table1
WHERE phone BETWEEN 13000000000 AND 13999999999
OR phone BETWEEN 15000000000 AND 15999999999
------解决思路----------------------
SELECT * FROM TB检索的最终原理,还是一个一个去匹配,在数据堆中去找出符合的数据,除了好的匹配过滤手段之外,建立合适的索引也可以加快检索速度,建议你在手机号上面建个索引
WHERE LEFT([手机号],1)=1
AND LEN([手机号])=11
AND[手机号]NOT LIKE'%[^0-9]%'