我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL COALESCE 函数不适用于 GORM

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL COALESCE 函数不适用于 GORM

php小编新一在这里为大家介绍一下SQL中的COALESCE函数。COALESCE函数用于返回参数列表中的第一个非NULL值。然而,需要注意的是,在使用GORM(Go语言的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的详细内容,更多请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL COALESCE 函数不适用于 GORM

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SQL COALESCE 函数不适用于 GORM

php小编新一在这里为大家介绍一下SQL中的COALESCE函数。COALESCE函数用于返回参数列表中的第一个非NULL值。然而,需要注意的是,在使用GORM(Go语言的ORM框架)时,COALESCE函数可能会出现一些问题。这是因为GO
SQL COALESCE 函数不适用于 GORM
2024-02-10

sql coalesce函数的用法是什么

COALESCE 函数用于返回参数列表中的第一个非空值。如果参数列表中的所有值都为 NULL,则返回 NULL。语法:COALESCE(value1, value2, ..., valuen)参数解释:value1, value2, …
sql coalesce函数的用法是什么
2024-03-04

sql中coalesce函数的用法是什么

在SQL中,COALESCE函数用于返回参数列表中的第一个非NULL表达式。它接受任意数量的参数,并返回第一个非NULL参数的值。如果所有参数都为NULL,则返回NULL。例如,以下是COALESCE函数的用法示例:SELECT COA
sql中coalesce函数的用法是什么
2024-04-09

sql中coalesce函数的作用是什么

COALESCE 函数是 SQL 中的一个函数,用于返回参数列表中第一个非 NULL 值。如果参数列表中所有的值都为 NULL,则 COALESCE 函数将返回 NULL。其语法通常如下:COALESCE(value1, value2,
sql中coalesce函数的作用是什么
2024-04-09

sql中coalesce函数的应用场景有哪些

在处理空值或NULL值时,可以使用COALESCE函数来返回第一个非空的值。可以用COALESCE函数来合并多个列的值,返回第一个非空的值。在查询中使用COALESCE函数可以简化逻辑判断,提高代码的可读性。可以用COALESCE函数
sql中coalesce函数的应用场景有哪些
2024-04-09

sql中coalesce函数的使用方法是什么

在SQL中,COALESCE函数用于返回参数列表中的第一个非NULL值。其语法如下:COALESCE(value1, value2, ...)其中,value1, value2为参数列表,可以是列名、常量或者表达式。COALESCE函数会
sql中coalesce函数的使用方法是什么
2024-04-09

sql中的coalesce函数使用无效怎么解决

如果在SQL中使用COALESCE函数时出现无效的情况,可能是因为参数传递的数据类型不匹配或者参数数量不正确。要解决这个问题,可以按照以下方法进行调整:确保传递给COALESCE函数的参数类型是相同的。如果参数类型不匹配,可以尝试将它们转换
sql中的coalesce函数使用无效怎么解决
2024-04-09

C++ 函数重载是否适用于成员函数?

是的,函数重载适用于成员函数,但受到以下限制:重载的成员函数必须具有不同的参数签名(类型和数量)。重载的成员函数不能具有相同的返回类型和不同的参数签名。C++ 函数重载是否适用于成员函数?简介函数重载允许我们在同一类中创建具有相同名称但
C++ 函数重载是否适用于成员函数?
2024-04-13

C++ 函数重载是否适用于构造函数和析构函数?

c++++ 构造函数支持重载,而析构函数不支持。构造函数可具有不同的参数列表,而析构函数只能有一个空参数列表,因为它在销毁类实例时自动调用,不需输入参数。C++ 中函数重载是否适用于构造函数和析构函数?引言函数重载允许函数在名称相同的情
C++ 函数重载是否适用于构造函数和析构函数?
2024-04-14

LEN函数适用于哪些数据类型的处理

LEN函数是一种常用的函数,可用于获取字符串、列表、元组等类型数据的长度。下面将具体介绍LEN函数能够处理的数据类型,并提供相应的代码示例。字符串(str):字符串是由若干个字符组成的序列,可以使用LEN函数获取字符串的长度。示例代码如下
LEN函数适用于哪些数据类型的处理
2024-01-29

PHP 函数文档编写规范是否适用于所有 PHP 函数?

php函数文档编写规范主要适用于核心和pecl扩展中的函数,以及自建函数,但不适用于内建语言结构和第三方库函数。这些规范包括添加@since标签,提供详细描述,并使用数据类型注释,以提高函数文档的清晰度和可理解性,增强代码的可维护性和可读性
PHP 函数文档编写规范是否适用于所有 PHP 函数?
2024-04-27

Golang函数的优势是否适用于所有应用场景?

go 函数在高并发、网络服务和分布式系统中表现优异,其轻量级、高并发性和高效内存管理等优势使其十分适用。但其在资源受限环境、低延迟应用和跨平台移植场景下不理想。浅析 Go 函数优势在不同应用场景中的适用性Go 函数相较于其他语言函数具有明
Golang函数的优势是否适用于所有应用场景?
2024-04-11

12个适用于DBA的数据库管理和开发的SQL工具

以下是12个适用于DBA的数据库管理和开发的SQL工具:1. MySQL Workbench:一个用于MySQL数据库管理和开发的综合工具,包括数据建模、SQL开发和数据库管理功能。2. SQL Server Management Stud
2023-09-05

关于c++杀线程函数TerminateThread强烈不建议使用

是的,关于C++中杀线程的函数TerminateThread确实是被强烈不建议使用的。TerminateThread函数是Windows API中的一个函数,用于终止指定线程的执行。然而,使用该函数可能会导致一些严重的问题:1. 不安全的线
2023-09-13

SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)

在SQL Server中,普通的表值函数(table-valued function)是可以使用表提示(Hints-Table)的,那么CLR类型的表值函数(table-valued function)是否也可以使用表提示(Hints-Table)呢? 相信很
SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)
2021-07-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录