Mysql 如果我不知道字段名,比如在select查询中使用*时,是否可以替换null

Mysql 如果我不知道字段名,比如在select查询中使用*时,是否可以替换null,mysql,database,Mysql,Database,将空值替换为空值 MS SQL 从TableName中选择IsNullColName作为ColName MySQL 从TableName中选择IfNullColName作为ColName IFNULLexpr1,expr2 如果expr1不为NULL,则IFNULL返回expr1;否则返回expr2。IFNULL返回一个数值或字符串值,具体取决于使用它的上下文 在不知道列名称的情况下,如何执行此操作?如果不知道列名称,则需要首先获取该表的所有列并动态生成SELECT查询,例如: SELECT c

将空值替换为空值

MS SQL

从TableName中选择IsNullColName作为ColName MySQL

从TableName中选择IfNullColName作为ColName IFNULLexpr1,expr2

如果expr1不为NULL,则IFNULL返回expr1;否则返回expr2。IFNULL返回一个数值或字符串值,具体取决于使用它的上下文


在不知道列名称的情况下,如何执行此操作?

如果不知道列名称,则需要首先获取该表的所有列并动态生成SELECT查询,例如:

SELECT column_name 
FROM information_schema.columns
WHERE table_name = 'mytable';
这将为您提供列。您可以编辑列表,使用逗号分隔的IFNULLcol构造SELECT查询,然后执行它


另一种方法是在查询中使用SELECT*,并在用户界面/服务层处理空/空值。

这将成为双重头痛和双重任务,运行查询2次会花费大量时间。添加另一种方法,但是,这些是实现这一点的唯一方法。只需分别写入所有列,您不能像select那样简单地将函数附加到多个列*您想将未知列的逻辑强加给您,这难道不奇怪吗?@OtoShavadze不写列_name@ajreal如果一个表由许多字段组成,那么重新写入所有列的名称是不好的,而且againI不符合您的逻辑。我建议保留数据库结果,只在表示层执行从空到空的转换。