0

我在下一个格式的表格中有一个字段,其中1_2..1_10|1_6|1_8|包括1_2..1_10和其他。1_21_3

我如何选择数据,在哪里number = 1_3

4

1 回答 1

1

第一个建议:获得修改数据库结构的权利,并弄清楚如何更好地存储 Navision 字符串。

第二个建议: CLR

我假设您对这些概念中的每一个都比较熟悉。如果你不是,他们在整个网络上都有很好的记录。

我的方法是使用 CLR 函数,因为 C# 很容易处理一些在 SQL 中很尴尬的高级事物。伪行走会像这样。

执行

  1. 创建一个 CLR 函数并在 SQL 服务器实例上实现它。
  2. 使用 SQL 结果集更改查询以根据导航过滤器值“1_3”查找 CLR 函数的返回值。

CLR 功能逻辑

  1. 创建 ac# 函数,该函数接受过滤器字段的值并返回一个字符串值。
  2. CLR 函数将过滤器字段按 | char 成一个列表。
  3. 在 CLR 函数内部创建第二个列表。遍历第一个列表。当您找到一个范围字符串时,将其拆分为“..”并手动将范围之间的每个可用值添加到第二个列表中。当您找到一个不是范围的值时,只需将其添加到第二个列表中。
  4. 在“|”上将第二个列表的内容连接在一起 性格。
  5. 返回连接的值。

SQL 逻辑

SELECT Field1,Field2...CLRFunctionName(FilterValue) AS FixedFilterValue FROM Sometable WHERE FixedFilterValue LIKE '%1_3%';
于 2013-01-23T18:16:50.240 回答