MySQL查询在表的多列中的表中查找电话号码

时间:2018-03-23 17:41:06

标签: c# mysql

我有一个债务收集数据库,在1个表格中有71列,可能有一个电话号码(primary phone, work phone, cell phone, custom1, custom2, custom3)等等。等等......我想要完成的是{{{ 1}}表单应用,用于搜索您在表单中输入的C# window,并找到匹配项,以便在成功匹配phone number时为您提供帐户的account number

并非所有电话号码都具有完全相同的格式,即。 phone number等......到目前为止,我还没有找到任何关于如何构造select语句以找到匹配的内容。我在整个过程中都是一个完整的菜鸟,但是从我发现的可能中我可以使用CONCAT或(444-444-1111, 4444441111, (444)444-1111)

非常感谢任何例子!

这只是我所思考的模型。

REGEXP

3 个答案:

答案 0 :(得分:1)

类似的东西:

select * 
from dbase 
where 
     primaryphone = '444-444-1111'
  OR cellphone = '444-444-1111', 
  OR workphone = '444-444-1111'
  // etc.

这是一个可怕的设计,但如果它是一次性的事情......

模糊匹配需要另一种方法,而且非常复杂。对于正则表达式,您必须进行替换,但我认为mysql没有替换任何内置正则表达式(同样,您可以构建自定义正则表达式函数,但它并不简单)。

如果你知道确切的分隔符,你可以做一些简单的替换:

select * 
from dbase 
where 
     REPLACE(
       REPLACE(
         REPLACE(primaryphone,'-','')
         ,'(','')
      ,')','') = '4444441111'

  OR REPLACE(
       REPLACE(
         REPLACE(cellphone,'-','')
         ,'(','')
      ,')','') = '4444441111'

//etc.

为此,您需要在没有任何符号的情况下传递搜索到的数字,并根据需要删除(使用尽可能多REPLACE个)记录中可能存在的所有已知符号。

同样,可怕的设计,但查询可以由工具生成,如果你不能改变你的数据库...

答案 1 :(得分:0)

除了@ Jcl的回答之外,您还可以使用REPLACE删除字段中的任何噪音,以便只获取数字,从而提高匹配率:

SELECT *
FROM dbase
WHERE REPLACE(primaryphone, '-', '') = '4444441111'

您可以链接REPLACES以删除所有内容:

REPLACE(REPLACE(REPLACE('(444)444-1111', '-', ''), '(', ''), ')', '')

如果你要剥离的字符列表很长,你可以use a table variable

答案 2 :(得分:0)

您可以使用如下所示的CONCAT语句,而不是对所有三列手机使用或声明!

var myForm = document.form1;

function btnCheckFormClick(e) {
  var txtName = myForm.txtName;
  var txtAge = myForm.txtAge;
  if (txtAge.value == "" || txtName.value == "") {
    alert("Please complete all of the form");
    if (txtName.value == "") {
      txtName.focus();
    } else {
      txtAge.focus();
    }
  } else {
    alert("Thanks for completing the form " + txtName.value);
  }
}

function txtAgeBlur(e) {
  var target = e.target;
  if (isNaN(target.value)) {
    alert("Please enter a valid age");
    target.focus();
    target.select();
  }
}

function txtNameChange(e) {
  alert("Hi " + e.target.value);
}
myForm.txtName.addEventListener("change", txtNameChange);
myForm.txtAge.addEventListener("blur", txtAgeBlur);
myForm.btnCheckForm.addEventListener("click", btnCheckFormClick);