如何按格式错误的列选择行


How to Select rows by bad formatted column

我有一个非常旧的数据库,有人没有保持有效的数据格式。所以在我的Column中我有这样的值:

in column is   1234567890             expected   1234567890
in column is   12-345-678-9-0 foo     expected   1234567890
in column is   bar 1234-567-890       expected   1234567890
in column is   12-34567-foobar-890    expected   1234567890
etc.

我的意思是,有一个数字(总是10位数字),在随机的地方有一些其他的字符。

我在变量$number中得到了10位数字的整数值。

我想做一些查询,如SELECT * FROM table WHERE Column = $number,但我想匹配所有行,有这个$number,如果我将清理我的列正确的格式。

要转换这个字母数字列中的数据,我看到了两种可能性:

  1. 从表中读取所有条目(通过php,正如您已经指定的标记),用正则表达式$newValue = preg_replace('/'D/', '', $oldValue);更改它,并使用该值更新数据库条目。

  • 使用用户定义的函数,如MySQL UDF RegExp,直接使用MySQL update语句。