我在想,如果這樣的事情是可能的:SQL內聯有條件在選擇
SELECT name or alt_name FROM users Where userid=somenum
我也試過這樣:
SELECT name IF NOT NULL ELSE alt_name ...
如果任何人有任何瞭解我會很感激的。
我在想,如果這樣的事情是可能的:SQL內聯有條件在選擇
SELECT name or alt_name FROM users Where userid=somenum
我也試過這樣:
SELECT name IF NOT NULL ELSE alt_name ...
如果任何人有任何瞭解我會很感激的。
如果您想更換空然後
select coalesce(name,alt_name)....
它將返回第一個非空值
不是最有效的答案,但對於這一點:
SELECT name FROM users WHERE userid=somenum AND name IS NOT NULL
UNION
SELECT altname FROM users WHERE userid=somenum AND name IS NULL
我認爲這會產生你所追求的。
如果你使用的是支持他們,那麼最簡單的方式之一數據庫使用用戶定義的函數,你再有
SELECT udfPreferredName() FROM users
其中udfPreferredName()
將封裝名稱和alternative_name領域之間進行選擇所需的邏輯。
使用函數的一個優點是,您可以抽象出選擇邏輯並將其應用於多個SQL語句中的任何需要的地方。使用案例進行內聯邏輯很好,但通常會在整個系統中更難以維護。在大多數RDBMS中的函數調用的額外開銷不會顯著,除非你正在處理非常大的表
SELECT CASE 當userid和= somenum然後命名 ELSE alt_name END 來自用戶的
你的意思是什麼喜歡這個?我假設TSQL
SELECT CASE WHEN [name] IS NOT NULL THEN [name] ELSE [alt_name] END AS [UserName]
FROM [Users] WHERE [UserId] = somenum
這個怎麼樣?
SELECT IsNull(name, alt_name) FROM users Where userid=somenum
它與Coalesce函數類似,但它只需要兩個參數並且更容易拼寫。
感謝,由於某種原因,當我嘗試提出問題時,工作時間的網絡在這裏,所以我不得不在我的iPhone上輸入它...... – 2009-09-23 15:29:18
也就是說,網絡導致頁面超時...大聲笑 – 2009-09-23 15:29:48