条件更新列B具有基于列A的修改后的值

时间:2019-04-07 08:31:58

标签: sql google-bigquery

我正面对一张大表,上面有从csv导入的数据。但是csv中的定界符没有被清除,因此输入数据看起来像这样:

alex@mail.com:Alex
dummy@mail.com;Bob
foo@bar.com:Foo
spam@yahoo.com;Spam
whatever@mail.com:Whatever

在导入期间:被定义为定界符,因此每一行都带有定界符;导入不正确。这导致了一个表的结构如下:

| ID  | MAIL                | USER     |
|-- --|---------------------|----------|
| 1   | alex@mail.com       | ALEX     |
| 2   | dummy@mail.com;Bob  | NULL     |
| 3   | foo@bar.com         | Foo      |
| 4   | spam@yahoo.com;Spam | NULL     |
| 5   | whatever@mail.com   | Whatever |

由于无法重新导入,因此我在考虑使用SQL查询手动清理受影响行中的数据。因此,我尝试通过过滤WHERE USER IS NULL的行来组合SELECT和UPDATE语句,并在适用的情况下使用正确的值更新两列。

1 个答案:

答案 0 :(得分:0)

您需要的是字符串函数。阅读一点,我发现Google BigQuery具有STRPOS()和SUBSTR()。

https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions#substr

https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions#strpos

用于解决您描述的情况的更新查询如下:

<template>
  <div>
    <x-question 
      v-for="(question, index) in questions" 
      :key="index" 
      type="question.type"></x-question>
  </div>
</template>

这里的想法是将邮件分为两部分,即;之前的部分。和之后的部分。希望这会有所帮助。