我想將一個if語句合併到SQL中,以確定字符串的值是否等於「」(並且我不是指空字符串 - 我的意思是兩個引號字符串)。我怎樣才能做到這一點。我想SQL看起來是這樣的:檢查字符串值
Select iif(Answer="","No Response", Answer)
From tblAnswers
我想將一個if語句合併到SQL中,以確定字符串的值是否等於「」(並且我不是指空字符串 - 我的意思是兩個引號字符串)。我怎樣才能做到這一點。我想SQL看起來是這樣的:檢查字符串值
Select iif(Answer="","No Response", Answer)
From tblAnswers
它看起來像你使用Microsoft Access(通過判斷使用iif)。爲了逃避雙引號,你應該能夠做到:
Select iif(Answer = """""", "No Response", Answer)
From tblAnswers
SELECT CASE
WHEN Answer = '""' THEN 'No Response'
ELSE Answer
END AS Answer
FROM tblAnswers
+1將與所有dbs一起工作 – Bohemian
@Bohemian - 我不會那麼肯定。 iif是不支持完整SQL的Microsoft Access的無用贈品。不知道它是否會允許CASE語句。 –
它肯定不會與Access一起工作,因爲Access/Jet/ACE SQL沒有SELECT CASE。但是,對「'」「''進行測試肯定會奏效。用戶如何使用Access輸入兩個雙引號,我不知道 - 當我嘗試訪問Access時,出現一個錯誤,顯示它將「'」的條目解釋爲嘗試存儲零長度字符串(我絕不允許在我的任何領域)。 –
您需要使用轉義字符。在SQL我相信這將是
Answer = "\"\"";
不適用於Access/Jet/ACE,但OP沒有指示數據庫引擎。 –
試試這個:
select if(Answer='""', 'No Response', Answer) as Answer
From tblAnswers
確切的語法將與您實際的數據庫而有所不同。您可能需要一個CASE
如果你的數據庫不支持if
SQL服務器:
SELECT ISNULL(NULLIF(Answer, ""), "No Response")
這是不正確的。 OP所說的字符串將會是2個引號,而不是空的。 –
嘗試:
SELECT CASE WHEN Answer = '' THEN 'No Response' ELSE Answer END FROM tblAnswers
不適用於Access/Jet/ACE,但OP沒有指示數據庫引擎。 –
對於Oracle
select decode(answer,"''''","No response",answer) from tblanswers
SELECT ISNULL(NULLIF(Answer,'""'), 'No Response') Answer
FROM tblAnswers
如果列包含兩個單引號,用這個:
SELECT ISNULL(NULLIF(Answer, ''''), 'No Response') Answer
FROM tblAnswers
不適用於Access/Jet/ACE,但OP沒有指明數據庫引擎。 –
訪問'數據庫引擎會識別單引號或雙引號中的字符串文字。因此,儘管這個人會工作...
Select IIf(Answer = """""", "No Response", Answer)
From tblAnswers;
...單引號將使其更清晰,海事組織,我想不太可能失去雙引號的適當數量的軌道時,我的眼睛累了。所以,我應該這樣做,而不是...
Select IIf(Answer = '""', 'No Response', Answer)
From tblAnswers;
如果你也想輸出無響應當回答是空或空字符串,試試這個...
Select IIf(Answer = '""' OR Len(Answer & "") = 0, 'No Response', Answer)
From tblAnswers;
SELECT IIF(Answer = CHAR(34) & CHAR(34), 'No Response', Answer)
FROM tblAnswers;
感謝您閱讀iif聲明並意識到我忘記提及 - 我正在使用MS Access。完美的作品! – Martian