有没有办法在mysql中只获取字符串的数字元素?

有没有办法在mysql中只获取字符串的数字元素?,mysql,Mysql,我希望让客户更容易搜索电话/手机/传真号码等信息。为了实现这一点,我希望在比较搜索值和数据库中的相关列之前,去掉其中任何非数字字符。我在mysql中只获取字符串的数字元素,但是当我使用它们时,它们会使我的查询慢到爬行 有没有办法不让我的运行时间飞涨呢?查询时间爆炸的原因是因为使用这些函数会使您无法使用任何索引。因为您不是直接在字段上搜索,而是在函数的输出上搜索,所以mySQL无法使用索引来执行查询 此外,您还必须计算每条记录的函数输出。查询时间爆炸的原因是,使用此类函数会禁用任何索引。因为您不是

我希望让客户更容易搜索电话/手机/传真号码等信息。为了实现这一点,我希望在比较搜索值和数据库中的相关列之前,去掉其中任何非数字字符。我在mysql中只获取字符串的数字元素,但是当我使用它们时,它们会使我的查询慢到爬行


有没有办法不让我的运行时间飞涨呢?

查询时间爆炸的原因是因为使用这些函数会使您无法使用任何索引。因为您不是直接在字段上搜索,而是在函数的输出上搜索,所以mySQL无法使用索引来执行查询


此外,您还必须计算每条记录的函数输出。

查询时间爆炸的原因是,使用此类函数会禁用任何索引。因为您不是直接在字段上搜索,而是在函数的输出上搜索,所以mySQL无法使用索引来执行查询


此外,您还必须计算每条记录的函数输出。

如果您有访问权和权限这样做,那么最好的解决方法是添加一个包含您正在筛选的内容的新列。添加一个写触发器,用剥离的值填充列,运行一个脚本,对所有记录更新一次字段。添加索引并包含新列。然后,在应用程序中,使用新列搜索电话号码值。缺点是表模式的改变和为业务逻辑和/或数据抽象层添加的代码。

如果您有访问权限和权限,那么最好的解决方法是添加一个包含您正在筛选的内容的新列。添加一个写触发器,用剥离的值填充列,运行一个脚本,对所有记录更新一次字段。添加索引并包含新列。然后,在应用程序中,使用新列搜索电话号码值。缺点是改变了表模式,并为业务逻辑和/或数据抽象层添加了代码。

是的,我也想出了很多办法,但我想不出任何其他办法。不幸的是,mySQL没有基于函数的索引,否则就只能这样了。如果您只想使用mySQL,我能想到的唯一方法是存储第二列,其中包含转换后的输出,对其进行索引,然后在该列上搜索。是的,我也想到了很多,但我想不出任何其他方法。不幸的是,mySQL没有基于函数的索引,否则这将是一种方法。如果您只想使用mySQL,我能想到的唯一方法是存储第二列,其中包含转换后的输出,为其编制索引,并在该列上搜索。如果这是唯一的方法,那么我们可能会跳过客户的生活质量更新,因为添加这些数据会花费很多时间,但不会带来太多好处。在我们的例子中,我们有大约一百万种方法来添加此类数据,更不用说自定义字段,这些字段也可以定义为电话号码之类的内容。无论如何,谢谢你的帮助,如果可以的话,再给我一个提示。像这样的需求经常出现,销售应用程序需要一些整洁而有光泽的东西,但要以正确的方式实现它需要很多时间。一种方法是实现一种机制,在下一次更新之前能够支持这一需求。制作一个索引良好的通用表,在该表中,您可以在某些关键字下插入动态功能,例如“literal phone#”,然后删除该值。您可以为当前版本实现一个函数以查看添加的表,然后将下一版本的功能更改为使用区域表(和实列)。这几乎总是需要在程序端延迟加载(即,只有在UI要求值时才加载)。这已经是一个大的更新,每个相关列都有完善的搜索和过滤选项,这个数字问题更像是一个内部请求。在与项目经理交谈后,我们认为这真的没有用,因为客户通常只搜索电话号码中的3-4个字母,然后从中找出答案。搜索部分前缀/区号会非常尴尬(搜索555-1不会找到555-123 4567,而是搜索4567)。但无论如何,谢谢你的提示,对像我这样的初学者来说很有用,只在这家公司工作了8个月。嗯,如果这是唯一的方法,那么我们可能会跳过这次客户生活质量更新,因为添加这些数据会花费很多时间,但不会带来太多好处。在我们的例子中,我们有大约一百万种方法来添加此类数据,更不用说自定义字段,这些字段也可以定义为电话号码之类的内容。无论如何,谢谢你的帮助,如果可以的话,再给我一个提示。像这样的需求经常出现,销售应用程序需要一些整洁而有光泽的东西,但要以正确的方式实现它需要很多时间。一种方法是实现一种机制,在下一次更新之前能够支持这一需求。制作一个索引良好的通用表,在该表中,您可以在某些关键字下插入动态功能,例如“literal phone#”,然后删除该值。您可以为当前版本实现一个函数以查看添加的表,然后将下一版本的功能更改为使用区域表(和实列)。这几乎总是需要在程序端延迟加载(即,只有在UI要求值时才加载)。这已经是一个大的更新,每个相关列都有完善的搜索和过滤选项,这个数字问题更像是一个内部请求。在和警察交谈之后