我需要一个更好的方法来替换字符串中的非数字字符。如何从字符串中替换非numiric字符MySQL
我的电话号码,像这样 (888)488-6655 888-555-8888 等等等等
所以我可以用一个简单的替换函数返回一个字符串,干净,但我期待更好的方法可能是使用表达式函数来替换任何非数字值。像空间斜杠,反斜杠,报价.....任何没有数值
这是我当前的查询
SELECT
a.account_id,
REPLACE(REPLACE(REPLACE(REPLACE(t.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS contact_number,
IFNULL(t.ext, '') AS extention,
CASE WHEN EXISTS (SELECT number_id FROM contact_numbers WHERE main_number = 1 AND account_id = a.account_id) THEN 0 ELSE 1 END AS main_number,
'2' AS created_by
FROM cvsnumbers t
INNER JOIN accounts a ON a.company_code = t.company_code
WHERE REPLACE(REPLACE(REPLACE(REPLACE(t.phone_number, '-', ''), ' ', ''), ')', ''),'(','') NOT IN(SELECT contact_number FROM contact_numbers WHERE account_id = a.account_id)
AND LENGTH(REPLACE(REPLACE(REPLACE(REPLACE(t.phone_number, '-', ''), ' ', ''), ')', ''),'(','')) = 10
我怎样才能改变我的查询使用一个正则表达式来代替非数字值。
感谢
由于所有其他包含'mysql'&'regex'的问题都表明,这不是本机'MySQL'。你[可以使用这个](https://launchpad.net/mysql-udf-regexp)。 – Wrikken