我需要检查电话号码列中的数据,以确保其格式为:(XXX)XXX-XXXX我已经知道有些行的条目格式不正确,例如:(123)456-7890 1234567890; 5678901223我已经尝试了很多查询,但这感觉最接近,但仍然没有返回值:
SELECT * FROM table_name WHERE telephone_number like '([000-9]) ([000-999])-([0000-9999])';
提前感谢你的帮助,克里斯蒂
gdrx4gfi1#
可以使用GLOB操作符:
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。
1条答案
按热度按时间gdrx4gfi1#
可以使用
GLOB
操作符:返回正确的格式化值,或者:
返回不正确的格式化值。
或者,使用更短的代码:
以及:
参见demo。