【发布时间】:2021-07-01 09:40:24
【问题描述】:
我正在尝试根据最近的日期获取不同的结果。如果我的 id 字段有小数,那么我希望小数点后的数字被截断。我的 id 字段是 ntext 格式。
输入:
| name | id | date1 | date2 |
|---|---|---|---|
| a | 2 | 12/25/2020 | 12/15/2021 |
| b | 3R | 10/08/2019 | 11/18/2019 |
| ab | 2.0 | 12/26/2020 | 12/16/2021 |
| c | 4 | 01/11/2018 | 10/06/2019 |
| ck | 4.4 | 04/01/2020 | 04/05/2021 |
| ad | 2.999 | 04/02/2021 | 04/05/2021 |
输出:
| name | id | date1 | date2 |
|---|---|---|---|
| ad | 2 | 04/02/2021 | 04/05/2021 |
| b | 3R | 10/08/2019 | 11/18/2019 |
| ck | 4 | 04/01/2020 | 04/05/2021 |
我尝试去除小数点后的所有数字,但没有奏效。
substring('2.2', 0 , charindex('.','2.2'))
编辑:我的 ID 字段也包含字母。
【问题讨论】:
-
请提供您的完整查询。
-
我试过了,但我在剥离十进制和非小数 ID 时遇到了困难,而且在获取每个 ID 的最新日期时也遇到了困难。
-
ntext 自 2005 年以来已被弃用。为什么现在使用它? round() function 可以截断 - 如果您可以安全地(可能不太可能)假设您的列包含有效的数值,这似乎是您所需要的。
-
CAST(id as int) 可以帮助您进行转换吗?
标签: sql sql-server