[英]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.