用GO写一段代码从MySQL里获取一批号码,将不是手机号的过滤掉,然后和我的表格里的手机号做比较,重复的不要,不重复的保存到一个新的表格里
时间: 2023-04-09 07:04:05 浏览: 75
好的,这是一个技术问题,我可以回答。以下是用GO语言从MySQL中获取一批号码并进行过滤和比较的代码:
```go
import (
"database/sql"
"fmt"
"regexp"
)
func main() {
// 连接MySQL数据库
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 查询号码
rows, err := db.Query("SELECT number FROM numbers")
if err != nil {
panic(err.Error())
}
defer rows.Close()
// 过滤号码
var numbers []string
for rows.Next() {
var number string
err := rows.Scan(&number)
if err != nil {
panic(err.Error())
}
if isMobile(number) {
numbers = append(numbers, number)
}
}
// 比较号码
existingNumbers := map[string]bool{}
existingRows, err := db.Query("SELECT number FROM existing_numbers")
if err != nil {
panic(err.Error())
}
defer existingRows.Close()
for existingRows.Next() {
var number string
err := existingRows.Scan(&number)
if err != nil {
panic(err.Error())
}
existingNumbers[number] = true
}
// 保存号码
for _, number := range numbers {
if !existingNumbers[number] {
_, err := db.Exec("INSERT INTO new_numbers (number) VALUES (?)", number)
if err != nil {
panic(err.Error())
}
}
}
}
func isMobile(number string) bool {
// 手机号正则表达式
pattern := `^1[3456789]\d{9}$`
matched, err := regexp.MatchString(pattern, number)
if err != nil {
panic(err.Error())
}
return matched
}
```
这段代码会从MySQL中查询号码,然后使用正则表达式过滤掉不是手机号的号码,接着与已有的号码进行比较,最后将不重复的号码保存到新的表格中。
阅读全文