我有一個工作的IF EXISTS命令來選擇已經在表中的PID_GUID,或者選擇一個值作爲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',可以在'選擇PID_GUID'進行重構,只是'選擇1'?如果一行被返回,'IF EXISTS'不會檢查'PID_GUID'是否爲NULL,對嗎? – Shawn
@Shawn如果'PID_GUID'爲'null',只要該行存在就沒關係 – SqlZim
謝謝,這就是我的想法。這是一種微型優化,但我曾經與一個系統合作,在這個系統中我們可以發揮每盎司的性能。我有點認識到「IF EXISTS」。據我所知,選擇一個真正的列會導致SQL引擎解析列,而1只返回一個布爾值。 – Shawn