SQL查询字符串比较

时间:2019-02-08 23:40:10

标签: sql sql-server

enter image description here我有以下两个表,即InvoiceData和OrderData 订单表显示已订购的商品,发票显示已交付的商品以及productID和其他信息。我想通过用逗号(,)进行拆分来比较两个表上的产品ID字段,并希望从发票数据表中获取行,即使订单的产品表中也有单个产品ID都可用。 例如结果我应该收到发票123、3334、3456和3435。

我已经尝试过split_String,但是我的环境。是sql server 2012,但出现错误。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

您可以反转ID的存储方式。为此,您将需要另外三个表。

我建议您阅读多对多关系(例如产品->发票和产品->订单之间的关系)

这是不必要的,但是我建议从命名约定中删除“数据”,因为假定数据库中的任何表都可以保存数据,所以对描述没有帮助。

Product Orders and Invoices

答案 1 :(得分:0)

以下功能将在2012年作为字符串拆分工作

<button (click)="getWeather()">Get Weather</button>
<pre>
  {{ weather$ | async | json }}
</pre>

然后您可以通过交叉申请来使用它。

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class WeatherService {
  key = 'dd6301427900459c863160646190201';
  weatherCatalog;

  constructor(private http: HttpClient) { }

  getWeather(position) {
    const { latitude, longitude } = position.coords;
    const queryString = `https://api.worldweatheronline.com/premium/v1/weather.ashx?key=${this.key}&q=${latitude},${longitude}&num_of_days=14&tp=4&format=json`;
    return this.http.get(queryString);
  }

  async getCurrentPosition() {
    return new Promise((resolve, reject) => {
      navigator.geolocation.getCurrentPosition(
        res => resolve(res),
        err => reject(err)
      );
    });
  }

}

这将为您提供发票编号和离散产品ID的列表,然后您可以执行所需的任何比较。这样可以使您正确地找到答案。

请注意,如果您提供的是可剪切和粘贴的数据集而不是图像,那么对于那些试图帮助您的人们来说,工作变得更加轻松。如果您看到第二个脚本,我已经设置了一个TVP和一个插入,那是一种简单的方法。

答案 2 :(得分:0)

感谢大家的回答。 我终于在下面的链接中遵循了Aaaron的解决方案。 https://sqlperformance.com/2012/07/t-sql-queries/split-strings

我不得不使用字符串拆分来比较两个产品ID的列。尽管这不是一个很好的解决方案,但是具有这样的非标准化数据,这似乎是一种可行的方法。

相关问题