gpt4 book ai didi

mysql - 在 Rails 中的 SQL 查询期间去除电话号码中的非数字值

转载 作者:行者123 更新时间:2023-11-29 14:12:51 25 4
gpt4 key购买 nike

我有一份新餐厅列表,我想使用电话号码对照餐厅数据库进行检查。电话号码的问题在于它们在数据库中具有不同的格式(即 123-345-6789(123)-456 8988)。

到目前为止,我已经为手机创建了索引,以便我快速搜索它们。我还删除了新餐厅的电话号码,以便它们只包含数字值 (0-9)。

现在,我想在比较之前剥离数据库的数字,以便严格比较数字。

#strip the phone of non-numeric values and spaces
formatted_phone = SunspotHelper.sanitize_term(pr.phone).gsub(/\s+/, "")

Restaurant.where(contact_phone: formatted_phone).each do |r|
#irrelevant code here
end

上述代码的问题在于 contact_phone(来自数据库)将采用非剥离格式。到目前为止,我的研究让我相信我必须使用像 REGEXP_LIKE 这样的东西,但我不太确定如何用 Rails 来实现它。我不想更新数据库 - 我只是想删除数字进行比较,同时仍保留数据库中的原始格式。

在将电话号码 contact_phoneformatted_phone 进行比较之前,如何从数据库中删除非数字值?

最佳答案

如果您只想将工作量限制在 Rails 查询上(而不是在数据库中的另一个字段中正确格式化电话号码),请按照以下方法使用数据库引擎的 REGEXP 功能

Restaurant.where(["REGEXP_REPLACE(contact_phone, '[^[:digit:]]', '') = ?", formatted_phone]).each do |r|
#irrelevant code here
end

关于mysql - 在 Rails 中的 SQL 查询期间去除电话号码中的非数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186281/

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