sql - 从存储为字符串的数字中删除所有尾随小数点

我有几个字符串(nvarchar 数据类型),一个是整数,一个是小数点。我的目标是删除小数并将所有 values 作为一个整数。

我尝试了下面的代码,但它给了我一个没有小数的 value 错误。有没有办法在没有案例表达式的情况下完成此操作。我将在连接中使用这个新列。

SELECT [SOW]
  --,LEFT([SOW], CHARINDEX('.', [SOW])-1) as 'TestColumn'
FROM [dbo].[t_Schedule_kdm]
WHERE sow  in ('15229.11','11092')

Output:
11092
15229.11

My desired Output:
11092
15229

回答1

只需附加一个点字符,以便您总能找到索引:

LEFT(SOW, CHARINDEX('.', SOW + '.') - 1)

不清楚是否需要将该表达式的结果转换为整数 value。

回答2

首先转换为您可能拥有的最精确的数字,例如decimal(9,2) 然后转换为 int。您不能直接从十进制字符串转换为 int。

SELECT [Value]
  , CONVERT(int,CONVERT(decimal(9,2),[Value]))
FROM (
    VALUES ('15229.11'),('11092')
) x ([Value]);