SQL,SQLYog - 在中的列中寻找 phone 数字模式
SQL,SQLYog - Looking for phone number pattern within column in
我最近有机会在学习的同时工作SQL。我对 SQL 语法和实践的了解有限。
作为我这份工作的首要任务之一,我必须在描述公寓大楼的一串文本中寻找 phone 个数字。原因是我们对插入联系信息收费。
虽然我写了一个只用 SQLyog 隔离数字的查询,但我希望通过隔离我有
的实例来进一步过滤我的 2k+ 结果
1) 没有 spaces 的 10 个连续数字
即 6173274810
2) 10 个连续数字,中间有 3 个数字、3 个数字和 4 个数字,中间有一个 space
即 855 347 2501
3) 10 个连续数字,中间有 3 个数字、3 个数字和 4 个数字,中间有一个以上 space
即 622 257 2701
到目前为止,这就是我得到的,
SELECT ac.complex_id, ac.comments,
LENGTH(r.number_string) AS count_of_characters, r.number_string
FROM aptcomplexes ac, manager_center_subscription mcs,
(SELECT complex_id, LENGTH(comments), comments,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
comments, '*', ''), '/',''), 'a', ''), 'b', ''), 'c', ''), 'd', ''), 'e', ''), 'f', ''), 'g', ''), 'h', ''), 'i', ''), 'j', ''), 'k', ''), 'l', ''), 'm', '')
, 'n', ''), 'o', ''), 'p', ''), 'q', ''), 'r', ''), 's', ''), 't', ''), 'u', ''), 'v', ''), 'w', ''), 'x', ''), 'y', ''), 'z', ''), '.', ''), ',', ''), "’", ''), 'A', ''), 'B', ''), 'C', ''), 'D', ''), 'E', ''),
'F', ''), 'G', ''), 'H', ''), 'I', ''), 'J', ''), 'K', ''), 'L', ''), 'M', ''), 'N', ''), 'O', ''), 'P', ''), 'Q', ''), 'R', ''), 'S', ''), 'T', ''), 'U', ''), 'V', ''), 'W', ''), "X", ''), 'Y', '')
, 'Z', ''), '!', ''), "?", ''), '$', ''), 'Z', ''), '-', ''), '(', ''), ')', ''), "&", ''), '*', ''), ':', ''), '"', ''), ';', ''), '@', ''), '|', ''), ';', ''),"\", ''), '+', ''), '[', ''),"]" , ''),"â" , '')
, "'", ''),"#" , ''),"=" , ''), "¦", ''), "\n", ''), "½", ''), "½", ''), "©", ''), "Ã", ''), "¿", ''), "ï", ''), "%", ''), "Â", ''), "¼", ''), "¡", ''), "³", ''), "¢", ''), "€", ''), "”", '')
, "_", '') , "‚", '') , "~", '') , "<", '') , ">", '') , "~", ''), "–", '') , "‘", ''), CHAR(10),''), CHAR(9),''), CHAR(13),''), '™',''), 'œ',''), '®','') AS number_string
FROM aptcomplexes
GROUP BY complex_id
) r
WHERE
ac.complex_id = mcs.complex_id
AND ac.complex_id = r.complex_id
AND LENGTH(r.number_string)>=10
AND mcs.subscription_status='Active'
AND mcs.product_id=1
GROUP BY ac.complex_id
ORDER BY LENGTH(r.number_string) DESC
;
我浏览了整个网站,但没有成功找到我真正要找的东西。我觉得这可能与 "LIKE" 或 "REGEXP." 有关 我相信 JS 将任何类型的数字都视为 \d,SQL 是否有类似的东西,因为“-”帐户所有字符都正确吗?
我确信有其他方法可以解决这个问题,但对我的查询进行一次演习将是最有帮助的。我真的很想学习!另外,如果有详细的解释就好了。
提前感谢您的帮助!
此正则表达式应满足您列出的所有要求。
where column REGEXP '[0-9]{3}[:space:]*[0-9]{3}[:space:]*[0-9]{4}'
[0-9]
表示允许一个数字(也是 \d
但 mysql 似乎不支持); {3}
表示前一个值必须有 3 个(例如一个数字)。 [:space:]
是 space 的 POSIX(\s
mysql 似乎也不支持) *
是零或spaces http://www.regular-expressions.info/posixbrackets.html.
的出现次数更多
我最近有机会在学习的同时工作SQL。我对 SQL 语法和实践的了解有限。
作为我这份工作的首要任务之一,我必须在描述公寓大楼的一串文本中寻找 phone 个数字。原因是我们对插入联系信息收费。
虽然我写了一个只用 SQLyog 隔离数字的查询,但我希望通过隔离我有
的实例来进一步过滤我的 2k+ 结果1) 没有 spaces 的 10 个连续数字 即 6173274810
2) 10 个连续数字,中间有 3 个数字、3 个数字和 4 个数字,中间有一个 space 即 855 347 2501
3) 10 个连续数字,中间有 3 个数字、3 个数字和 4 个数字,中间有一个以上 space 即 622 257 2701
到目前为止,这就是我得到的,
SELECT ac.complex_id, ac.comments,
LENGTH(r.number_string) AS count_of_characters, r.number_string
FROM aptcomplexes ac, manager_center_subscription mcs,
(SELECT complex_id, LENGTH(comments), comments,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
comments, '*', ''), '/',''), 'a', ''), 'b', ''), 'c', ''), 'd', ''), 'e', ''), 'f', ''), 'g', ''), 'h', ''), 'i', ''), 'j', ''), 'k', ''), 'l', ''), 'm', '')
, 'n', ''), 'o', ''), 'p', ''), 'q', ''), 'r', ''), 's', ''), 't', ''), 'u', ''), 'v', ''), 'w', ''), 'x', ''), 'y', ''), 'z', ''), '.', ''), ',', ''), "’", ''), 'A', ''), 'B', ''), 'C', ''), 'D', ''), 'E', ''),
'F', ''), 'G', ''), 'H', ''), 'I', ''), 'J', ''), 'K', ''), 'L', ''), 'M', ''), 'N', ''), 'O', ''), 'P', ''), 'Q', ''), 'R', ''), 'S', ''), 'T', ''), 'U', ''), 'V', ''), 'W', ''), "X", ''), 'Y', '')
, 'Z', ''), '!', ''), "?", ''), '$', ''), 'Z', ''), '-', ''), '(', ''), ')', ''), "&", ''), '*', ''), ':', ''), '"', ''), ';', ''), '@', ''), '|', ''), ';', ''),"\", ''), '+', ''), '[', ''),"]" , ''),"â" , '')
, "'", ''),"#" , ''),"=" , ''), "¦", ''), "\n", ''), "½", ''), "½", ''), "©", ''), "Ã", ''), "¿", ''), "ï", ''), "%", ''), "Â", ''), "¼", ''), "¡", ''), "³", ''), "¢", ''), "€", ''), "”", '')
, "_", '') , "‚", '') , "~", '') , "<", '') , ">", '') , "~", ''), "–", '') , "‘", ''), CHAR(10),''), CHAR(9),''), CHAR(13),''), '™',''), 'œ',''), '®','') AS number_string
FROM aptcomplexes
GROUP BY complex_id
) r
WHERE
ac.complex_id = mcs.complex_id
AND ac.complex_id = r.complex_id
AND LENGTH(r.number_string)>=10
AND mcs.subscription_status='Active'
AND mcs.product_id=1
GROUP BY ac.complex_id
ORDER BY LENGTH(r.number_string) DESC
;
我浏览了整个网站,但没有成功找到我真正要找的东西。我觉得这可能与 "LIKE" 或 "REGEXP." 有关 我相信 JS 将任何类型的数字都视为 \d,SQL 是否有类似的东西,因为“-”帐户所有字符都正确吗?
我确信有其他方法可以解决这个问题,但对我的查询进行一次演习将是最有帮助的。我真的很想学习!另外,如果有详细的解释就好了。
提前感谢您的帮助!
此正则表达式应满足您列出的所有要求。
where column REGEXP '[0-9]{3}[:space:]*[0-9]{3}[:space:]*[0-9]{4}'
[0-9]
表示允许一个数字(也是 \d
但 mysql 似乎不支持); {3}
表示前一个值必须有 3 个(例如一个数字)。 [:space:]
是 space 的 POSIX(\s
mysql 似乎也不支持) *
是零或spaces http://www.regular-expressions.info/posixbrackets.html.