使用PHP变量作为参数的CASE WHEN进行SQL UPDATE

安迪·痛风

我有一个数据库,以各自的格式存储资料,例如,《白痴》(小说),《哈姆雷特》(游戏),《星球大战》(剧本)等。

我正在使用一个PHP函数,该函数删除了文章(即The / A / An /'等),并创建了一个变量($ mat_alph,如果不存在则分配为NULL),以后可以通过该变量将其按字母顺序排列。这仅对于具有文章的标题才是必需的,但是对于那些没有文章的标题,我希望将其保存为数据库中的NULL值。

将变量保存为NULL状态会将其存储为空字符串,而不是实际的NULL值,这在以后通过IS NULL / IS NOT NULL过滤结果时会引起问题(当将SELECT命令与CASE WHEN一起使用时,我将需要这样做对于没有文章的人,请致电mat_nm;对于有文章的人,请致电mat_alph。我不想为没有文章的标题保存mat_alph值,因为这将适用于大量内容,重复使用mat_nm值并浪费内存。

是否可以在使用PHP变量作为参数的UPDATE语句中使用CASE WHEN?

下面的尝试会在没有文章的情况下处理标题(例如,Hamlet将mat_alph更新为NULL),而在有文章(即,白痴)的情况下创建此错误:

截断了错误的DOUBLE值:“白痴”

$sql=   "UPDATE mat SET
        mat_nm='$mat_nm',
        mat_alph=CASE WHEN ('$mat_alph') THEN '$mat_alph' END,
        mat_url='$mat_url',
        frmtid=(SELECT frmt_id FROM frmt WHERE frmt_url='$frmt_url')
        WHERE mat_id='$mat_id'";

这有可能吗?我是否需要单独的SQL UPDATE命令仅用于更新mat_alph字段?

该问题也适用于初始INSERT命令,我希望该解决方案将同时适用于两者。

$sql =  "INSERT INTO mat(mat_nm, mat_alph, mat_url, frmtid)
        SELECT '$mat_nm', '$mat_alph', '$mat_url', frmt_id FROM frmt WHERE frmt_url='$frmt_url'";

提前致谢。

安迪·痛风

该参数需要正确的语法。三种解决方案:

mat_alph=CASE WHEN NULLIF('$mat_alph','') IS NOT NULL THEN '$mat_alph' END

mat_alph=CASE WHEN '$mat_alph'='' THEN NULL ELSE '$mat_alph' END

mat_alph=CASE WHEN '$mat_alph'!='' THEN '$mat_alph' END

最后一个是第二个的较短版本,它可以工作,因为不匹配的情况默认将NULL给出。

感谢R937

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SQL中,使用DENY UPDATE时如何引用参数/变量?

来自分类Dev

使用一个SQL查询进行SELECT,UPDATE,DELETE?

来自分类Dev

如何避免在Npgsql中使用Update命令进行SQL注入?

来自分类Dev

在PHP中使用“ and”或“ or”作为变量进行查询

来自分类Dev

使用Equijoin进行UPDATE查询

来自分类Dev

使用Anorm进行SELECT ... FOR UPDATE

来自分类Dev

使用Anorm进行SELECT ... FOR UPDATE

来自分类Dev

使用SQL CASE / WHEN输出进行计算

来自分类Dev

使用CASE WHEN语句在SQL中进行更新

来自分类Dev

从PHP进行查询时,SQL的UPDATE请求失败,但在SQL命令行上运行良好

来自分类Dev

使用带有 SET 的 PHP UPDATE 作为设置为另一个变量的变量?

来自分类Dev

SQL的SQL Server Update SET,其中select使用表中的字段进行更新

来自分类Dev

在PHP中使用SQL UPDATE返回

来自分类Dev

使用SSIS变量(@ [User :: FileName])作为“执行Sql Server任务”中UPDATE的一部分?

来自分类Dev

使用JOIN的SQL UPDATE查询

来自分类Dev

使用ORDER BY的SQL UPDATE TOP?

来自分类Dev

Ruby CASE和WHEN的update_all

来自分类Dev

使用FOR UPDATE进行奇怪的清理行为

来自分类Dev

使用PDO进行大UPDATE查询

来自分类Dev

在MySQL中使用SELECT ... FOR UPDATE进行死锁

来自分类Dev

使用php函数的参数作为SQL查询中的列名

来自分类Dev

使用php函数的参数作为SQL查询中的列名

来自分类Dev

在字段名称中使用变量-SQL Update语句

来自分类Dev

在UPDATE中使用内联XML变量的SQL始终为null

来自分类Dev

使用case_when按日期范围对变量进行分类?

来自分类Dev

SQL Server:使用Case语句进行变量声明

来自分类Dev

PHP sql UPDATE无法正常工作

来自分类Dev

从UPDATE SQL语句创建PHP代码(codeigniter)

来自分类Dev

PHP Update sql 显示空白页

Related 相关文章

  1. 1

    在SQL中,使用DENY UPDATE时如何引用参数/变量?

  2. 2

    使用一个SQL查询进行SELECT,UPDATE,DELETE?

  3. 3

    如何避免在Npgsql中使用Update命令进行SQL注入?

  4. 4

    在PHP中使用“ and”或“ or”作为变量进行查询

  5. 5

    使用Equijoin进行UPDATE查询

  6. 6

    使用Anorm进行SELECT ... FOR UPDATE

  7. 7

    使用Anorm进行SELECT ... FOR UPDATE

  8. 8

    使用SQL CASE / WHEN输出进行计算

  9. 9

    使用CASE WHEN语句在SQL中进行更新

  10. 10

    从PHP进行查询时,SQL的UPDATE请求失败,但在SQL命令行上运行良好

  11. 11

    使用带有 SET 的 PHP UPDATE 作为设置为另一个变量的变量?

  12. 12

    SQL的SQL Server Update SET,其中select使用表中的字段进行更新

  13. 13

    在PHP中使用SQL UPDATE返回

  14. 14

    使用SSIS变量(@ [User :: FileName])作为“执行Sql Server任务”中UPDATE的一部分?

  15. 15

    使用JOIN的SQL UPDATE查询

  16. 16

    使用ORDER BY的SQL UPDATE TOP?

  17. 17

    Ruby CASE和WHEN的update_all

  18. 18

    使用FOR UPDATE进行奇怪的清理行为

  19. 19

    使用PDO进行大UPDATE查询

  20. 20

    在MySQL中使用SELECT ... FOR UPDATE进行死锁

  21. 21

    使用php函数的参数作为SQL查询中的列名

  22. 22

    使用php函数的参数作为SQL查询中的列名

  23. 23

    在字段名称中使用变量-SQL Update语句

  24. 24

    在UPDATE中使用内联XML变量的SQL始终为null

  25. 25

    使用case_when按日期范围对变量进行分类?

  26. 26

    SQL Server:使用Case语句进行变量声明

  27. 27

    PHP sql UPDATE无法正常工作

  28. 28

    从UPDATE SQL语句创建PHP代码(codeigniter)

  29. 29

    PHP Update sql 显示空白页

热门标签

归档