在某个字符前选择整数

时间:2015-05-12 13:15:50

标签: sql-server

我正在尝试在SQL数据库表中的char C之前选择包含以下信息的整数值。

240mm2 X 15C WIRING CABLE
150mm2 X 3C flex
10mm2 x 4C swa

到目前为止,我已经使用了查询

 select left ('C',CHARINDEX ('C',product_name)) from product

我得到了C'在我的结果是正确的。现在我卡住有没有人知道如何修改上面的选择查询以获得只列出整数的结果,例如

15
 3
 4

3 个答案:

答案 0 :(得分:3)

两个观察结果:“C”之前的整数在它之前有一个空格,整数和“C”之间没有空格。

如果这些通常属实,那么您可以使用substring_index()

执行您想要的操作
select substring_index(substring_index(product_name, 'C', 1), ' ', -1) + 0 as thenumber

+ 0只是将值转换为数字。

答案 1 :(得分:0)

您可以使用instring和substring的组合。

首先得到C的位置 然后子串直到C

它是这样的:

SELECT INSTR('foobarbar', 'bar');
= 4

然后从1到4中选择子串。

答案 2 :(得分:0)

如果您在SQL Server中执行此操作,则可以尝试以下操作:

Select Substring(product_name, 
                 PATINDEX('% [0-9]%',product_name) + 1, 
                 PATINDEX('%[0-9]C%',product_name) - PATINDEX('% [0-9]%',product_name)
                ) as num
from Product

这假设在数字之前有一个空格,并且在数字之后总是一个C,没有空格。

它根据起点和终点计算起点,然后根据结果执行子串。