重建查询特定字符串

时间:2017-06-04 08:50:39

标签: sql sql-server

我的产品编号如下所示:

一个示例产品(包含几个文章)

14.12312.1
14.12312.2
14.12312.3
14.12312.4
14.12312.5

其他示例产品(包含几篇文章)

003.23.1
003.23.66
003.23.44
003.23.77
003.23.5

重要的是点是分隔符:

<producentNumber>.<specialnumber>.<articlevariation>

现在我得到的查询可以采取特定产品的第一部分,例如我可以通过:003.23.(带有最后一个点),然后它给我所有的开始,所以:

003.23.1
003.23.66
003.23.44
003.23.77
003.23.5

这是这样做的查询:

SELECT ID, Nummer FROM [Cenea].[dbo].[T_Artikel] 
                  WHERE
                  SUBSTRING(Nummer, 0, LEN(Nummer) + 2 -  CHARINDEX('.', REVERSE(Nummer)))  IN 
                  (
                                                                                         '003.23.'
                  )

然而现在是变化,在文章编号的最后部分可能会出现点而不仅仅是数字,所以这意味着我可以这样:

 003.23.1
 003.23.66..dwqd
 003.23.4422.323.3
 003.23.77....f
 003.23.5

因此,当我通过003.23.时,在这种情况下,我将得到的不仅仅是003.23.1。逻辑保留,因为它是前两个点持有基地,但在第二个点之后可能有任何东西。问题是如何重建我的sql查询以适应变化以获取alkl文章?

希望一切都清楚,请提供工作代码,因为我必须在今天改变生产。

1 个答案:

答案 0 :(得分:0)

您可以使用LIKE获取Number<some value>开头的所有行:

SELECT ID, Nummer FROM [Cenea].[dbo].[T_Artikel] 
WHERE Number LIKE '003.23%'