当前位置: 首页 > 面试题库 >

如何从MySQL查询的字符串中提取数值?

叶谦
2023-03-14
问题内容

我有一个包含两列的表:price(int)和price_display(varchar)。

price是实际的数字价格,例如“ 9990”

price_display是视觉表示,例如“ $ 9.99”或“ 9.99Fr”

我已经能够通过regexp确认两列是否匹配:

price_display不是regexp格式(price / 1000,2)

但是在不匹配的情况下,我想从price_display列中提取值并将其设置为price列,所有这些都在update语句的上下文中。我还不知道怎么做。

谢谢。


问题答案:

此函数只执行从字符串返回数字0-9的工作,这很好地解决了您的问题,无论您使用什么前缀或后缀。

http://www.artfulsoftware.com/infotree/queries.php?&bw=1280#815

复制此处以供参考:

SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS digits;
DELIMITER |
CREATE FUNCTION digits( str CHAR(32) ) RETURNS CHAR(32)
BEGIN
  DECLARE i, len SMALLINT DEFAULT 1;
  DECLARE ret CHAR(32) DEFAULT '';
  DECLARE c CHAR(1);

  IF str IS NULL
  THEN 
    RETURN "";
  END IF;

  SET len = CHAR_LENGTH( str );
  REPEAT
    BEGIN
      SET c = MID( str, i, 1 );
      IF c BETWEEN '0' AND '9' THEN 
        SET ret=CONCAT(ret,c);
      END IF;
      SET i = i + 1;
    END;
  UNTIL i > len END REPEAT;
  RETURN ret;
END |
DELIMITER ;

SELECT digits('$10.00Fr'); 
#returns 1000


 类似资料:
  • 问题内容: 用户可以在我的网站上使用HTML表单输入URL,因此他们可以输入以下内容:http : //www.example.com?test=123&random=abc,可以是任何内容。我需要提取某个查询参数的值,在本例中为“ test”(值123)。有没有办法做到这一点? 问题答案: 你可以用与这样的: 允许将URL分为不同的部分(方案,主机,路径,查询等);在这里,我们使用它仅获取查询(

  • 如何在我的routes.jsx文件中定义一个路由来捕获参数值,这些参数值是在从服务器重定向后由Twitter的单点登录进程生成的URL中获得的? 我尝试了以下路由配置,但未捕获提到的参数:

  • 问题内容: 所以假设我有一个像 我需要它是: 用Java解析此问题的最佳方法是什么?到目前为止,我找不到使用标准Java库的解决方案,也不想重新发明轮子。 我试过了(但是如果我只放像我这样的查询参数,那将不起作用): 问题答案: 为什么不使用正则表达式之类的东西: 例如像这样的一个,它适用于您的url示例,这就是为什么我添加了这个部分;) 这将适用于第一个样本( -> 当然,如果您的参数名称也不是

  • 问题内容: 从服务器重定向后,如何在我的routes.jsx文件中定义路由以从Twitter的单点登录过程生成的URL 捕获参数值? 我尝试使用以下路由配置,但没有捕获上述参数: 问题答案: 反应路由器v3 React Router已经为您解析了位置并将其作为道具传递给RouteComponent。您可以通过访问查询(在URL中的?之后)部分 如果要查找路径参数值(在路由器内部用冒号(:)分隔),

  • 问题内容: 我有一些包含字母数字值的字符串输出。我只想从该字符串中获取数字。如何通过查询获取?我可以使用哪个MySql函数? 我的查询就像: 输出: 我想要输出像: 问题答案: 如果字符串以数字开头,然后包含非数字字符,则可以使用该函数,或者通过添加一个将其隐式转换为数字: 要从 任意 字符串中提取数字,您可以添加一个自定义函数,如下所示: 定义函数后,您可以在查询中使用它:

  • 我正在写一个应用程序,根据该应用程序,你将被发送一条短信,其中包含一个重置代码,以确认你是该帐户的所有者。。但是我正在尝试以这样一种方式构建应用程序:它接收接收到的短信的广播,并仅从短信正文中获取指定的整数。我们注意到你想要重置密码的短信示例。密码重置代码是3242。,谢谢 我只想从整个短信正文中获取重置代码=3242。。谢谢