[英]Replace blank and null values in SQL
我有以下查询:
Select
impressions,
COALESCE(u.company,u.email) AS Publisher
FROM users AS u
这里,公司字段具有公司名称或空值或空值。 我不希望Publisher列具有空值或空值。
上面的语句适用于NULL,因为在这种情况下它返回u.email值。 但它不适用于空白值。 所以我试着这样做:
COALESCE(NULLIF(u.company,''),u.email)
这似乎不起作用,因为空白值不会被电子邮件替换。
有人可以指出我哪里出错了吗? 还有其他选择吗?
也许这个:
COALESCE(NULLIF(u.company,u.email),u.email)
如果我理解你正确说的话。
COALESCE按顺序计算参数,并返回最初未计算为NULL的第一个表达式的当前值。
所以这似乎是你的语句适用于NULL的原因。 如果它不适用于空值,则因为如果将其作为字符串求值,则空白值在技术上仍然是一个值。
此外,如果您指的是数据库表不能具有空值或空值,则可以通过以下方式将表设置为不接受空值:
ALERT TABLE [表名] ALTER COLUMN [column] INTEGER NOT NULL
如果不是那种类型,整数显然会被替换。 这样做可以触发与数据库通信的代码中的问题,但如果没有正确编写以处理发送到数据库的空值。
要使用另一列中的值替换某个列中的值,例如使用您可以尝试的电子邮件值替换公司值。
UPDATE [table name] t
SET t.[column name] =
(SELECT [other column name from table2] FROM [table2 name] v
WHERE t.[column name] = v.[column name from table2]);
这有点脏,但它会起作用。 只需在case语句中定义要替换的每个案例(如果有人放入2或3个空格,则使用trim)。 可能不是最佳解决方案
case when u.company is null then u.email
when trim(u.company) = '' then u.email
else u.company
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.