sql - SQL DB2 替换列中的值
问题描述
我有以下列,B 代表布尔值,其余的是空值。我必须将此列中的所有值更改为单词 COLUMN A。
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 版本因此受到限制,则使用 case 将布尔值转换为其他可表示的值
SELECT CASE WHEN column = TRUE THEN 'true' ELSE 'false' END FROM TABLE
推荐阅读
- apache-spark - 既然 SparkSession 是唯一的入口点,为什么 SparkContext 仍然可用?
- reactjs - 将 this.props.history.push 传递给另一个组件的一个变量中的属性。反应 JS
- c++ - 如何使用指针表示法从数组中的元素中减去?
- swift - 为什么我的 swift 代码出现故障?
- mysql - 在 MYSQL 和 PHP 中存储和查询数组或单词组
- c# - 抑制 EF core 3.0.x 初始化消息
- selenium - 无法将字符串与从属性文件中读取的另一个字符串进行比较
- swift - 从 dae 文件中获取预览图像,在 UIImage 中显示
- ios - iOS Mach-O – 使 __TEXT 段暂时可写
- javascript - 后退按钮在 Iphone 浏览器中保留以前动态生成的页面内容,但在桌面浏览器中不保留