SQL 转换一个字符串值

SQL cast a string value

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

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

谁能建议我如何将其转换为整数?

我只要

330
30
1000

-- 干杯

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

阅读更多LEFT (Transact-SQL)

以下将起作用。

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

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

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

这会奏效。如果正文中没有'h',则return空白。如果你想投,那就去吧。但请确保您的数据首先经过验证。

从 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

试试这个

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