小编eni*_*205的帖子

使用 ISNULL 将 INT 列值转换为空字符串

我需要将 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)

sql type-conversion isnull sql-server-2008

4
推荐指数
1
解决办法
7865
查看次数

SQL:使用Distinct,Not Exists,CTE,Union选择重复值

我需要从下面的Object表中选择以绿色突出显示的重复值: 对象表

我尝试过以下代码的不同组合.但是不能返回两个重复的行.

;with CTE as
    (Select distinct ID, count([Object ID]) as [Object ID] 
from #Object 
     group by ID having count([Object ID]) > 1)

select * from CTE where 
    NOT EXISTS (Select distinct ID , count(distinct [Object ID]) as [Object ID] 
from #Object group by ID having count(distinct [Object ID]) > 1);
Run Code Online (Sandbox Code Playgroud)

sql-server union duplicates not-exists common-table-expression

3
推荐指数
1
解决办法
703
查看次数

使用“存在时的情况”子句进行更新

我有两张桌子。我需要用“ 1”和“ 0”更新一个表中的一列。E_ID在两列中均匹配时为“ 1”,第二个表中不存在E_ID为“ 0”。
注意:一个表具有所有E_ID,第二个表具有E_ID的子集。这两个故事中的E_ID列上都不包含NULL。

下面的查询仅执行作业的第一部分(更新为“ 1”)。

UPDATE [MIDASFactory].[dbo].[Employees] 
SET  [Changed To Residential] = 1
FROM  ##formerEmployees t
INNER JOIN [dbo].[Employees] (NOLOCK)
     ON t.e_ID = E_ID
Run Code Online (Sandbox Code Playgroud)

如上所述,我修改了上面的查询以也用“ 1”和“ 0”进行更新。

但是它无法正常工作,因为它将所有行更新为以下查询中的select子条款返回的第一个值,其中两个表中的E_ID均匹配。

UPDATE [dbo].[Employees] 
SET  [Current Employee] = 
    CASE WHEN EXISTS (SELECT * FROM [dbo].[Employees] P (NOLOCK) 
                      LEFT OUTER JOIN  ##formerEmployees t (NOLOCK) ON P.E_ID=t.e_ID)
            THEN 1 
            ELSE 0
        END 
FROM  ##formerEmployees t
Run Code Online (Sandbox Code Playgroud)

sql-server case exists where sql-update

2
推荐指数
1
解决办法
3503
查看次数