数据库怎么用非空值填充为空值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库怎么用非空值填充为空值?相关的知识,希望对你有一定的参考价值。
有一个表,结构如下:name列和评价列
name 评价
张 100
张
李 96
李 null
赵 98
赵 98
请问怎么把空值和null值更新为非空值。
update votexinxiinfo
set votexinxiinfo.评价=a.评价
from
(select * from votexinxiinfo where 评价 is not null or 评价 !='') as a
where votexinxiinfo.评价 is null or 评价 ='' and votexinxiinfo.name=a.name
怎不行?
分拆开怎么就行呢?
update votexinxiinfo
set votexinxiinfo.评价=a.评价
from
(select * from votexinxiinfo where 评价 is not null) as a
where votexinxiinfo.评价 is null and votexinxiinfo.name=a.name
update votexinxiinfo
set votexinxiinfo.评价=a.评价
from
(select * from votexinxiinfo where 评价 !='') as a
where 评价 ='' and votexinxiinfo.name=a.name
求解?还有别的办法么?
如果想把列值设置为空,直接用update语句赋空值就可以了。update 表 set 评价='' where ... ;
你的语句中想把非空的值赋给空值的评价列中,但没有明确指出哪一行的评价列赋给空值列。这里需要通过主键一一对应才行。update的子查询写法如下:
update votexinxiinfo set 评价=(select 评价 from votexinxiinfo where ...) where ...; 参考技术A update votexinxiinfo
set votexinxiinfo.评价=a.评价
from
(select * from votexinxiinfo where 评价 is not null or 评价 !='') as a
where (votexinxiinfo.评价 is null or 评价 ='') and votexinxiinfo.name=a.name;
你把or的那两个东西用括号括起来,要不逻辑关系是有问题的本回答被提问者采纳
不可为空的属性必须包含关于 EF 关系的非空值警告
【中文标题】不可为空的属性必须包含关于 EF 关系的非空值警告【英文标题】:Non-nullable property must contain a non-null value warning on EF relationships 【发布时间】:2022-01-07 02:26:11 【问题描述】:C# 编译器向我显示Non-nullable property must contain a non-null value
on:
relationships
DbSet
根据本文档:Working with Nullable Reference Types 我可以使用以下方法消除DbSet
的警告:
public class DataContext : DbContext
public DataContext(DbContextOptions options) : base(options)
public DbSet<Customer> Customers => Set<Customer>();
public DbSet<Order> Orders => Set<Order>();
对于 EF relationships
以及以下示例,消除此警告的最佳方法是什么(不使用 #pragma warning disable CS8618
)?
public class Customer
public Guid CustomerId get; set; = Guid.NewGuid();
public string Username get; set;
public virtual IEnumerable<Order> Orders get; set;
public Customer(string username)
// still gets warning for `Orders`
Username = username;
在关系的另一边:
public class Order
public Guid OrderId get; set; = Guid.NewGuid();
public string Description get; set;
public Guid CustomerId get; set;
public virtual Job Job get; set;
public Log(string description, Guid customerId)
// still gets warning for `Job`
Description = description;
CustomerId = customerId;
【问题讨论】:
你真的使用可为空的引用类型吗? 【参考方案1】:回答我自己的问题我相信这是在 EF relationships
中删除警告的最合适方法:
public class Customer
public Guid CustomerId get; set; = Guid.NewGuid();
public string Username get; set;
public virtual IEnumerable<Order> Orders get; set; = null!;
public Customer(string username)
Username = username;
在关系的另一边:
public class Order
public Guid OrderId get; set; = Guid.NewGuid();
public string Description get; set;
public Guid CustomerId get; set;
public virtual Job Job get; set; = null!;
public Log(string description, Guid customerId)
Description = description;
CustomerId = customerId;
但如果有人有更好的想法,请随时分享。
【讨论】:
是的,我认为最好的方法是要么初始化它们,要么改变你的数据模型,但这样你就不能再使用可空类型了以上是关于数据库怎么用非空值填充为空值?的主要内容,如果未能解决你的问题,请参考以下文章