返回顶部
首页 > 资讯 > 精选 >SQL COALESCE 函数不适用于 GORM
  • 570
分享到

SQL COALESCE 函数不适用于 GORM

go语言sql语句 2024-02-10 14:02:01 570人浏览 泡泡鱼
摘要

PHP小编新一在这里为大家介绍一下sql中的COALESCE函数。COALESCE函数用于返回参数列表中的第一个非NULL值。然而,需要注意的是,在使用GORM(Go语言的ORM框架)

PHP小编新一在这里为大家介绍一下sql中的COALESCE函数。COALESCE函数用于返回参数列表中的第一个非NULL值。然而,需要注意的是,在使用GORMGo语言的ORM框架)时,COALESCE函数可能会出现一些问题。这是因为GORM对于查询语句的处理方式与传统的SQL语句有所不同。因此,如果你在使用GORM时遇到了COALESCE函数的问题,可能需要考虑其他的解决方案。

问题内容

db.model(&domain.products{}).where("product_code", product.product_code).
updates(map\[string\]interface{}{
"product_image": gorm.expr("coalesce(?, products.product_image)", product.product_image),
"size":          gorm.expr("coalesce(?, products.size)", product.size),
"color":         gorm.expr("coalesce(?, products.color)", product.color),
"unit_price":    gorm.expr("coalesce(?, products.unit_price)", product.unit_price),
"stock":         gorm.expr("coalesce(?, products.stock)", product.stock),
})

这是一个 gorm 查询,用于在我们更新表时管理空值插入。 如果新值(传入值)为空,我想通过保留表中的现有值来更新表。 但在我的代码中,表正常更新,这意味着空值和非空值都正常更新。我希望有人能帮助我

我也尝试过 gorm 原始查询。但它也不起作用

ar.DB.Exec("UPDATE products SET size = COALESCE(?, size) WHERE product_code = ?", product.Size, product.Product_Code)

解决方法

coalesce 返回第一个不是 nil 的参数。

为此,您需要提供指针。但是,正如从评论中的代码片段中看到的那样,没有提供任何指针。因此,所有指定字段都将被更新。

具体来说,您的 products (或在您的程序中调用的任何名称)类型应该看起来更像这样:

package domain

type products struct {
    product_code  int `gorm:"not null"`
    product_image *string
    size          *int
    color         *string
    unit_price    *float64
    stock         *int
}

请注意,字段被定义为指针。

然后它会像这样使用:

newStock := 12
prod := domain.Products{    
    product_code: 42,   
    product_image: nil,     
    size: nil,  
    color: nil,     
    unit_price: nil,    
    stock: &newStock, 
}

正弦所有字段都是 nil,除了 stock 之外,只有 stock 会在数据库中更新。

以上就是SQL COALESCE 函数不适用于 GORM的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: SQL COALESCE 函数不适用于 GORM

本文链接: https://lsjlt.com/news/563130.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL COALESCE 函数不适用于 GORM
    php小编新一在这里为大家介绍一下SQL中的COALESCE函数。COALESCE函数用于返回参数列表中的第一个非NULL值。然而,需要注意的是,在使用GORM(Go语言的ORM框架)...
    99+
    2024-02-10
    go语言 sql语句
  • sql coalesce函数的用法是什么
    COALESCE 函数用于返回参数列表中的第一个非空值。如果参数列表中的所有值都为 NULL,则返回 NULL。 语法: COALE...
    99+
    2024-03-04
    sql
  • sql中coalesce函数的作用是什么
    COALESCE 函数是 SQL 中的一个函数,用于返回参数列表中第一个非 NULL 值。如果参数列表中所有的值都为 NULL,则 ...
    99+
    2024-04-09
    sql
  • sql中coalesce函数的用法是什么
    在SQL中,COALESCE函数用于返回参数列表中的第一个非NULL表达式。它接受任意数量的参数,并返回第一个非NULL参数的值。如...
    99+
    2024-04-09
    sql
  • sql中coalesce函数的应用场景有哪些
    在处理空值或NULL值时,可以使用COALESCE函数来返回第一个非空的值。 可以用COALESCE函数来合并多个列的值,返回第一...
    99+
    2024-04-09
    sql
  • sql中coalesce函数的使用方法是什么
    在SQL中,COALESCE函数用于返回参数列表中的第一个非NULL值。其语法如下: COALESCE(value1, value2...
    99+
    2024-04-09
    sql
  • sql中coalesce函数的功能有哪些
    在SQL中,COALESCE函数用于返回参数列表中的第一个非空表达式。其功能包括: 返回参数列表中的第一个非空值。 如果参数列表中...
    99+
    2024-04-09
    sql
  • oracle中coalesce函数用法
    oracle coalesce 函数返回一组表达式中的第一个非空值,常用于数据处理和修复缺失值。使用方法:1. 确定要检查的表达式;2. 指定 coalesce 函数;3. 提供要检查的...
    99+
    2024-04-30
    oracle
  • sql中的coalesce函数使用无效怎么解决
    如果在SQL中使用COALESCE函数时出现无效的情况,可能是因为参数传递的数据类型不匹配或者参数数量不正确。要解决这个问题,可以按...
    99+
    2024-04-09
    sql
  • 如何在 MySQL 中使用 COALESCE 函数
    1. 简介 在 MySQL 中,COALESCE 函数可以用来返回参数列表中的第一个非空值。如果所有参数都为空,则返回 NULL。本文将介绍 COALESCE 函数的语法和用法,并通过示例演示其效果。 2. 语法 COALESCE 函数的语...
    99+
    2023-09-26
    java 数据库 开发语言
  • oracle中coalesce函数有哪些用途
    在Oracle中,COALESCE函数用于返回参数列表中的第一个非NULL表达式的值。它的主要用途包括: 将多个列值合并为一个单一...
    99+
    2024-04-23
    oracle
  • C++ 函数重载是否适用于成员函数?
    是的,函数重载适用于成员函数,但受到以下限制:重载的成员函数必须具有不同的参数签名(类型和数量)。重载的成员函数不能具有相同的返回类型和不同的参数签名。 C++ 函数重载是否适用于成员...
    99+
    2024-04-13
    c++ 函数重载 成员函数
  • 如何在 MySQL 中使用 IFNULL() 函数代替 COALESCE() 函数?
    我们知道,如果第一个参数不为 NULL,IFNULL() 函数将返回第一个参数,否则返回第二个参数。另一方面,COALESCE() 函数将返回第一个非 NULL 参数。实际上,如果参数数量只有两个,MySQL 中的 IFNULL() 和 C...
    99+
    2023-10-22
  • pgsql中coalesce函数的用法是什么
    在pgsql中,COALESCE函数用于返回参数列表中的第一个非null值。它的用法如下: COALESCE(value1, val...
    99+
    2024-04-09
    pgsql
  • pgsql中coalesce函数的作用是什么
    在 PgSQL 中,COALESCE 函数的作用是从给定的参数列表中返回第一个非 NULL 值。如果所有参数都是 NULL,那么 C...
    99+
    2024-04-09
    pgsql
  • DictionaryEntry不适用于Dictionary
    这个说法是错误的。在C#中,DictionaryEntry是一个类,用于表示Dictionary中的键值对。它包含两个属性,Key和...
    99+
    2023-09-27
    Dictionary
  • MySql COALESCE函数使用方法代码案例
    COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一...
    99+
    2022-05-31
    MySql COALESCE函数
  • C++ 函数重载是否适用于构造函数和析构函数?
    c++++ 构造函数支持重载,而析构函数不支持。构造函数可具有不同的参数列表,而析构函数只能有一个空参数列表,因为它在销毁类实例时自动调用,不需输入参数。 C++ 中函数重载是否适用于...
    99+
    2024-04-14
    c++ 函数重载
  • Gorm 中的 Preload 函数有什么作用?
    Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Gorm 中的 Preload 函数有什么作用?》带大家来了解一下##content_...
    99+
    2024-04-04
  • oracle中coalesce函数使用要注意哪些事项
    在使用Oracle中的COALESCE函数时,需要注意以下事项: COALESCE函数用于返回参数列表中第一个非NULL值。因此,...
    99+
    2024-04-23
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作