If Exists 命令设置变量
If Exists command in setting a variable
我有一个有效的 IF EXISTS 命令,用于 select 表中已有的 PID_GUID,或 select 用作 PID_GUID 的值如果它不存在于表中。命令如下所示;
IF EXISTS (SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595')
BEGIN
SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
End
ELSE
SELECT 'a70600f4-1cff-4284-a2ce-5eb19f47cf19'
现在我想做的是将其放入设置这样的变量中;
Daclare @OLDPID = VARCHAR(36)
SET @OLDPID = IF EXISTS (SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595')
BEGIN
SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
End
ELSE
SELECT 'a70600f4-1cff-4284-a2ce-5eb19f47cf19'
我将如何在 SQL2008 中执行此操作?
在每个语句中设置变量:
IF EXISTS (SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595')
BEGIN
SELECT @OLDPID = PID_GUID
FROM PID
WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
End
ELSE
SELECT @OLDPID = 'a70600f4-1cff-4284-a2ce-5eb19f47cf19';
其实我更倾向于使用:
DECLARE @OLDPID VARCHAR(36) = 'a70600f4-1cff-4284-a2ce-5eb19f47cf19';
IF EXISTS (SELECT PID_GUID
FROM PID
WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
)
BEGIN
SELECT @OLDPID = PID_GUID
FROM PID
WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595';
END;
我会使用 COALESCE()
,因为 COALESCE()
无所不能。
SELECT @OLDPID = COALESCE((SELECT PID_GUID
FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
FETCH FIRST 1 ROW ONLY),
'a70600f4-1cff-4284-a2ce-5eb19f47cf19')
我们不需要讨厌的 IF 语句!
SQL 服务器 --
SELECT @OLDPID = COALESCE((SELECT TOP 1 PID_GUID
FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'),
'a70600f4-1cff-4284-a2ce-5eb19f47cf19')
我有一个有效的 IF EXISTS 命令,用于 select 表中已有的 PID_GUID,或 select 用作 PID_GUID 的值如果它不存在于表中。命令如下所示;
IF EXISTS (SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595')
BEGIN
SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
End
ELSE
SELECT 'a70600f4-1cff-4284-a2ce-5eb19f47cf19'
现在我想做的是将其放入设置这样的变量中;
Daclare @OLDPID = VARCHAR(36)
SET @OLDPID = IF EXISTS (SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595')
BEGIN
SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
End
ELSE
SELECT 'a70600f4-1cff-4284-a2ce-5eb19f47cf19'
我将如何在 SQL2008 中执行此操作?
在每个语句中设置变量:
IF EXISTS (SELECT PID_GUID FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595')
BEGIN
SELECT @OLDPID = PID_GUID
FROM PID
WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
End
ELSE
SELECT @OLDPID = 'a70600f4-1cff-4284-a2ce-5eb19f47cf19';
其实我更倾向于使用:
DECLARE @OLDPID VARCHAR(36) = 'a70600f4-1cff-4284-a2ce-5eb19f47cf19';
IF EXISTS (SELECT PID_GUID
FROM PID
WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
)
BEGIN
SELECT @OLDPID = PID_GUID
FROM PID
WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595';
END;
我会使用 COALESCE()
,因为 COALESCE()
无所不能。
SELECT @OLDPID = COALESCE((SELECT PID_GUID
FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'
FETCH FIRST 1 ROW ONLY),
'a70600f4-1cff-4284-a2ce-5eb19f47cf19')
我们不需要讨厌的 IF 语句!
SQL 服务器 --
SELECT @OLDPID = COALESCE((SELECT TOP 1 PID_GUID
FROM PID WHERE EDI_ID = '12874' OR PID = 'ROBERT' OR PID = 'R595'),
'a70600f4-1cff-4284-a2ce-5eb19f47cf19')