簡體   English   中英

SQL DB2替換列中的值

[英]SQL DB2 Replace value in a column

我有以下專欄,B代表布爾值,其余均為空值。 我必須將該列中的所有值更改為單詞COLUMNA。

  COLUMN
  -----


   B

例如,我嘗試了不同的方法

 SELECT COLUMN 
 FROM TABLE
 WHERE COALESCE(NULLIF(COLUMN,''), 'COLUMN A');

並且收到錯誤消息:“在函數“ BOOLEAN”的字符串參數中找到了無效字符。” 我有點被這個問題困擾,我對這個布爾值感到困惑。 如果有人可以幫助我,我將非常高興,謝謝!

WHERE子句未完成。 將COALESCEd值與以下內容進行比較:

SELECT COLUMN 
 FROM TABLE
 WHERE COALESCE(NULLIF(COLUMN,''), 'COLUMN A') = 'COLUMN A';

或更好:

SELECT COLUMN 
 FROM TABLE
 WHERE COLUMN IS NULL OR COLUMN = ''

不需要任何思考/計算即可得出您的選擇邏輯。 更易於維護,對同行開發者更好

*以上是通常情況下不涉及布爾數據類型的一般性建議(通常需要一些不同的處理)


現在,您說您必須將值更改為某種值。 這需要一個UPDATE語句。 如果此列是布爾值,則它將沒有空字符串值。 空白將為空:

UPDATE TABLE SET COLUMN = (some boolean) WHERE COLUMN IS NULL

如果您不想將表數據永久更改為某些內容,而是希望將其選擇為發生空白的某個值,但將空白存儲在表中:

SELECT COALESCE(column, (some boolean)) FROM TABLE

可能值得注意的是,並非所有版本的DB2都可以在結果集中返回布爾值-這在數據庫供應商中是很典型的。 如果您的DB2版本受到限制,則使用情況將布爾值轉換為其他可表示的值

SELECT CASE WHEN column = TRUE THEN 'true' ELSE 'false' END FROM TABLE

最簡單的方法是使用CASE表達式。 我對db2不熟悉,因此您可能需要進一步研究,但是在其他DBMS中,它的工作方式如下:

當COLUMN =``THEN'COLUMN A'-如果COLUMN =''時選擇案例,將其替換為'COLUMN A'ELSE COLUMN-否則,請保持COLUMN不變。 以'COLUMN'結尾-在表的結果'COLUMN'中命名該列

這是一篇文章,解釋了它在db2中的工作方式: https : //www.ibm.com/support/knowledgecenter/zh-CN/SSEPEK_11.0.0/sqlref/src/tpc/db2z_caseexpression.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM