SQL转换了一个字符串值

时间:2015-01-05 09:22:11

标签: sql sql-server database

我必须将数据库中的马力字段作为整数获得,但它包含如下所示的值

330hp/@6,000
30hp/@3,000
1000hp/@6,000

有人可以建议我如何将其转换为整数?

我只需要

330
30
1000

- 干杯

4 个答案:

答案 0 :(得分:3)

这会奏效。如果没有' h'在文中,它将返回空白。如果你想演员,请继续。但请确保首先验证数据。

从0开始是删除第一个字符的好方法' h'而不是减去1,当没有' h'存在

DECLARE @t table(col varchar(20))
insert @t values
('330hp/@6,000'),
('30hp/@3,000'),
('1000hp/@6,000'),
('123')

SELECT 
  SUBSTRING(col, 0, CHARINDEX('h', col))
FROM @t

结果:

330
30
1000
blank

答案 1 :(得分:2)

Select LEFT(ColumnName,CHARINDEX('h',ColumnName) - 1)

了解更多LEFT (Transact-SQL)

答案 2 :(得分:2)

以下内容可行。

SELECT LEFT(@ Test,PATINDEX('%hp / @%',@ Test)-1)

然后将结果转换为int。如果您的数据不符合给定的标准,您可能希望在try块中放置类似的内容。

SELECT CAST(LEFT(@ Test,PATINDEX('%hp / @%',@ Test)-1)AS INT)

答案 3 :(得分:2)

试试这个

SELECT LEFT(col1,PATINDEX('%hp%',Col1) - 1) 来自MyTable