【问题标题】:Extracting Numeric Data from a Field Using SQL使用 SQL 从字段中提取数值数据
【发布时间】:2021-03-10 11:29:12
【问题描述】:

我在 Access 表中有一个列,其中的数据是 HTML 文本字符串,在文本中是我想要分离出来的数字数据点,例如“客户数量”、“销售额”和“利润” ”。

例如,sales_description 字段中的一项可能是“2020 年 11 月 27 日的客户数量为 99,销售额:967,利润:190”

到目前为止,我一直在使用 SQL 中的 REPLACE 函数来删除我不想要的常见字符。现在,我想看看是否可以使用 TRIM 和 SPLIT 来获取 #Customers、Sales 和 Profit 的三列。

对于本例,从表中提取所有内容并删除一些 HTML 文本的查询是:

SELECT order_id, order_date, REPLACE(REPLACE(sales_description, '', ''), '', '') FROM 销售数据;

我想编写一个查询,其中的结果具有以下字段和值类型:

order_id(例如:0143823)
订单日期(例如:2020 年 11 月 27 日)
客户数量(例如:35)
销售额(例如:280)
利润(例如:56)

感谢您提供的任何帮助,如果我应该提供更多详细信息,请告诉我。

【问题讨论】:

    标签: sql ms-access split extract trim


    【解决方案1】:

    没有要提取的 ID,但是使用 VBA 很容易提取 Number、Sales、Profit

    ? Val(Split(s, "Sales: ")(1))
     967 
    ? Val(Split(s, "Profit: ")(1))
     190
    ? Val(Split(s, " was ")(1))
     99 
    

    日期需要更多时间:

    ? CDate(Split(Split(s, "Number of Customers on")(1), " ")(1))
    2020-11-27
    

    您可以编写一个包装函数来从 SQL 中调用这些函数来提取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多