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)
以下将起作用。
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
我必须将数据库中的马力字段作为整数获取,但它包含如下值
330hp/@6,000
30hp/@3,000
1000hp/@6,000
谁能建议我如何将其转换为整数?
我只要
330
30
1000
-- 干杯
Select LEFT(ColumnName,CHARINDEX('h',ColumnName) - 1)
以下将起作用。
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