eni*_*205 4 sql type-conversion isnull sql-server-2008
我需要将 INT 数据类型的列 ID 转换为空字符串 ['']。我不应该修改源列数据类型,而是需要在我在另一个表中的转换中转换它。ID 列是“可为空的”,因为其中包含空值。这是我的代码。
CREATE TABLE #V(ID INT) ;
INSERT INTO #V
VALUES (1),(2),(3),(4),(5),(NULL),(NULL) ;
SELECT CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column
FROM #V;
Run Code Online (Sandbox Code Playgroud)
这将返回:
ID_Column
1
2
3
4
5
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
当我修改我的 CASE 语句时,如下所示:
CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column
Run Code Online (Sandbox Code Playgroud)
它返回:
ID_Column
1
2
3
4
5
0
0
Run Code Online (Sandbox Code Playgroud)
这是你想要的吗?
select coalesce(cast(id as varchar(255)), '')
from #v;
Run Code Online (Sandbox Code Playgroud)
您必须将整个结果列转换为单个列。如果你想要一个空值,那么类型是某种字符串。
在您的示例中, theelse id意味着 的结果case是一个整数,这就是您获得0or 的原因NULL。
| 归档时间: |
|
| 查看次数: |
7865 次 |
| 最近记录: |