gpt4 book ai didi

php - 用空字符串替换 MSSQL 中的所有非数字字符

转载 作者:行者123 更新时间:2023-12-04 06:13:23 27 4
gpt4 key购买 nike

我当前的 MSSQL 表有一个“电话”列,它是一个 varchar。不幸的是,数据库中已有的电话号码不是标准格式。例如,888-888-8888 或 888/888/8888 或 (888)8888888 或 8888888888。

我想获取与 88888888 等效的所有行,即它应该与 888-888-8888、(888)888888 等匹配。

我曾尝试使用 REPLACE(),但在某些行中,条目具有其他字母字符,如“e”、“ex”、“ext”等。所以我想替换所有非数字字符。

使用 MSSQL 查询获取“匹配”行的最佳方法是什么?

最佳答案

使用 MySQL 的简单版本:

SELECT * FROM `phones` WHERE `phone` LIKE '%8%8%8%8%8%8%8%8%8%8%'

使用 PHP:
// Get all your table rows into $rows using SELECT ..
foreach ($rows as $row) {
$row['phone'] = preg_replace('/\D/', '', $row['phone'];
// Save the row using UPDATE ..
}

正则表达式 \D匹配任何非数字字符。见 php.net/preg_replace想要查询更多的信息。

如果您只想找到与“8888888888”匹配的行,则可以使用:
if (preg_match('/\D*8\D*8\D*8\D*8\D*8\D*8\D*8\D*8\D*8\D*8\D*/', $row['phone'])) {
..
}

这可以简化/抽象为:
$match = '8888888888';
if (preg_match('/' . preg_replace('/(\d)/', '\D*$1', $match) . '\D*/', $row['phone'])) {
..
}

关于php - 用空字符串替换 MSSQL 中的所有非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7523872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com