日期:2014-05-17  浏览次数:20638 次

把一个字段可能包含手机号查询出来,不要重复的,急急急
rt
把一个字段可能包含有手机号查询出来,不要重复的,急急急
不用太复杂的验证首字母是1,11位的就行

------解决方案--------------------
select * from tb 
where len(col)=11 and left(col,1)=1

------解决方案--------------------
select distinct 字段 from 表名 where 字段 like '1[3,5,8][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' 
------解决方案--------------------

-試試以下:
WITH a1 (phone_no) AS
(
SELECT '王明13889887645'  UNION all
SELECT '13823432123李刚'
)
SELECT DISTINCT SUBSTRING(phone_no,CHARINDEX('1',phone_no),11) phone_no
FROM a1

------解决方案--------------------
引用:
Quote: 引用:

DECLARE @a TABLE(a VARCHAR(20))
INSERT @a SELECT '王明13889887645'
UNION ALL SELECT '13823432123李刚'
UNION ALL SELECT '王明13889887645李刚'
UNION ALL SELECT '王明23889887645李刚'
UNION ALL SELECT '13823432123'
UNION ALL SELECT NULL 
UNION ALL SELECT '13'

SELECT * FROM 
(
SELECT SUBSTRING(a,PATINDEX('%[0-9]%',a),LEN(a)-PATINDEX('%[0-9]%',REVERSE(a))+1- PATINDEX('%[0-9]%',a)+1)   x
FROM @a 
WHERE isnull(a,'')<>''
)aa 
WHERE LEN(x)=11 AND LEFT(x,1)=1




--Result
/*
x                    
-------------------- 
13889887645
13823432123
13889887645
13823432123

(所影响的行数为 4 行)
*/

你这个的话,如果测试数据是一个数字开头结尾中间存在字符共11位的就也会被找出来啊,有一定局限,如“138234321李3”

一个手机号藏得这么深?