sqlite 确认电话号码数据格式正确

atmip9wb  于 11个月前  发布在  SQLite
关注(0)|答案(1)|浏览(120)

我需要检查电话号码列中的数据,以确保其格式为:
(XXX)XXX-XXXX
我已经知道有些行的条目格式不正确,例如:(123)456-7890 1234567890; 5678901223
我已经尝试了很多查询,但这感觉最接近,但仍然没有返回值:

SELECT * FROM table_name
WHERE telephone_number like '([000-9]) ([000-999])-([0000-9999])';

提前感谢你的帮助,克里斯蒂

gdrx4gfi

gdrx4gfi1#

可以使用GLOB操作符:

SELECT * 
FROM table_name
WHERE telephone_number GLOB '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]';

返回正确的格式化值,或者:

SELECT * 
FROM table_name
WHERE telephone_number NOT GLOB '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]';

返回不正确的格式化值。
或者,使用更短的代码:

SELECT * 
FROM table_name
WHERE telephone_number GLOB REPLACE('(XXX) XXX-XXXX', 'X', '[0-9]');

以及:

SELECT * 
FROM table_name
WHERE telephone_number NOT GLOB REPLACE('(XXX) XXX-XXXX', 'X', '[0-9]');

参见demo

相关问题