Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Sql条件插入(如果不是null,则插入值或插入null)_Mysql_Sql_Insert - Fatal编程技术网

Mysql Sql条件插入(如果不是null,则插入值或插入null)

Mysql Sql条件插入(如果不是null,则插入值或插入null),mysql,sql,insert,Mysql,Sql,Insert,我订了一张桌子。用于在表顺序中插入数据的表单包含一些可选字段。这意味着某些字段可能有数据或为空。 我已经在数据库中将这些字段设置为“null” 我想编写一个sql查询,类似于: (如果:数据不为空,则插入:数据否则插入空) :此处的数据是提交表单中字段的值 我已经尝试过IFNULL、ISNULL,但似乎不起作用,因为我遇到了一些错误,例如“×”无法执行SQL语句:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解要在附近使用的正确语法…” 如何编写这样的查询 编辑: 这是M

我订了一张桌子。用于在表顺序中插入数据的表单包含一些可选字段。这意味着某些字段可能有数据或为空。 我已经在数据库中将这些字段设置为“null”

我想编写一个sql查询,类似于:

(如果:数据不为空,则插入:数据否则插入空)


:此处的数据是提交表单中字段的值

我已经尝试过IFNULL、ISNULL,但似乎不起作用,因为我遇到了一些错误,例如“×”无法执行SQL语句:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解要在附近使用的正确语法…”

如何编写这样的查询

编辑:

这是Modather Sadik提出的问题

 insert into [table] (data) Values ((CASE WHEN @d IS NULL OR datalength(@d) = 0 THEN NULL ELSE @d END))
这个问题符合我想要实现的目标。我试过这个:

INSERT INTO commande 
        VALUES (
               null,
               :date_ajout,
               CASE WHEN :etat_commande IS NULL OR datalength(:etat_commande) = 0 THEN NULL ELSE :etat_commande END,
               CASE WHEN :lieu_commande IS NULL OR datalength(:lieu_commande) = 0 THEN NULL ELSE :lieu_commande END,
               CASE WHEN :rappel IS NULL OR datalength(:rappel) = 0 THEN NULL ELSE :rappel END,
               CASE WHEN :avec_avance IS NULL OR datalength(:avec_avance) = 0 THEN NULL ELSE :avec_avance END,
               CASE WHEN :article_nom IS NULL OR datalength(:article_nom) = 0 THEN NULL ELSE :article_nom END,
               CASE WHEN :article_reference IS NULL OR datalength(:article_reference) = 0 THEN NULL ELSE :article_reference END,
               CASE WHEN :article_quantite IS NULL OR datalength(:article_quantite) = 0 THEN NULL ELSE :article_quantite END,
               CASE WHEN :article_prix IS NULL OR datalength(:article_prix) = 0 THEN NULL ELSE :article_prix END,
               CASE WHEN :article_description IS NULL OR datalength(:article_description) = 0 THEN NULL ELSE :article_description END,
               CASE WHEN :article_site_web IS NULL OR datalength(:article_site_web) = 0 THEN NULL ELSE :article_site_web END,
               CASE WHEN :article_image1 IS NULL OR datalength(:article_image1) = 0 THEN NULL ELSE :article_image1 END,
               CASE WHEN :article_image2 IS NULL OR datalength(:article_image2) = 0 THEN NULL ELSE :article_image2 END,
               CASE WHEN :id_transporteur IS NULL OR datalength(:id_transporteur) = 0 THEN NULL ELSE :id_transporteur END,
               :id_employe,
               CASE WHEN :id_client IS NULL OR datalength(:id_client) = 0 THEN NULL ELSE :id_client END,
               CASE WHEN :id_fournisseur IS NULL OR datalength(:id_fournisseur) = 0 THEN NULL ELSE :id_fournisseur END,
               CASE WHEN :date_depart_livraison IS NULL OR datalength(:date_depart_livraison) = 0 THEN NULL ELSE :date_depart_livraison END,
               CASE WHEN :date_livraison IS NULL OR datalength(:date_livraison) = 0 THEN NULL ELSE :date_livraison END,
               CASE WHEN :montant_avance IS NULL OR datalength(:montant_avance) = 0 THEN NULL ELSE :montant_avance END,
               CASE WHEN :mode_paiement IS NULL OR datalength(:mode_paiement) = 0 THEN NULL ELSE :mode_paiement END,
               CASE WHEN :etat_paiement IS NULL OR datalength(:etat_paiement) = 0 THEN NULL ELSE :etat_paiement END,
               CASE WHEN :prix_achat IS NULL OR datalength(:prix_achat) = 0 THEN NULL ELSE :prix_achat END,
               CASE WHEN :prix_de_vente IS NULL OR datalength(:prix_de_vente) = 0 THEN NULL ELSE :prix_de_vente END,
               CASE WHEN :montant_a_payer IS NULL OR datalength(:montant_a_payer) = 0 THEN NULL ELSE :montant_a_payer END,
               CASE WHEN :frais_livraison IS NULL OR datalength(:frais_livraison) = 0 THEN NULL ELSE :frais_livraison END,
               CASE WHEN :infos_frais IS NULL OR datalength(:infos_frais) = 0 THEN NULL ELSE :infos_frais END,
               CASE WHEN :benefice IS NULL OR datalength(:benefice) = 0 THEN NULL ELSE :benefice END
               );
但我有一个错误:

Cannot execute SQL statement: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':article_image1 IS NULL OR datalength(:article_image1) = 0 THEN NULL ELSE :artic' at line 15
你所说的数据是什么意思,是表中的一些值还是所有值


如果是某个表值,只需直接插入数据,可为null的值在db中为null。

您是否正在寻找在特定列中数据不为null时插入的插入

insert into orders
select col1, col2, col3 
  from srctable
 where col3 is not null

不建议编写这样的查询

定义一个变量

var x;
if data is null 
    x= null
else
    x = data
然后将变量x传递给sql语句。

请尝试下面的方法

 insert into [table] (data) Values ((CASE WHEN @d IS NULL OR datalength(@d) = 0 THEN NULL ELSE @d END))
此查询检查值是否为null或空,如果是,则将插入null,否则将插入sent值


当然@d将作为参数从您的表格中填写。

编辑您的问题并提供(1)样本数据;(2) 预期结果;(3) 不起作用的查询。你没有就你的问题进行太多的沟通。传递文章_image1的价值是什么?如果需要,是否可以对该值进行适当的转义?article_image1和article_image2包含图像路径。即使我填写了这两个字段,仍然会得到相同的错误!:这里的数据是提交表单中字段的值。当我直接在可空列中插入:data时,我看不到:data的值,即使它有一些值,我也只在数据库中看到null。请尝试在下面插入[table](data)值((当@d为null或datalength(@d)=0时,则为null,否则@d END))此查询检查值是否为null或空,如果是,然后它将插入null,否则它将插入已发送的数据。这不可用作回答。:这里的数据是提交表单中字段的值。提交表单时,如果可选字段包含值,我将插入它。。。。如果可选字段不包含任何表示为空的值,则我在数据库中插入null。如果插入空表示插入null是!这就是我想做的。但不幸的是,我得到了这个错误:无法执行SQL语句:您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法:article_image1为NULL或datalength(:article_image1)=0,然后在第15jusr行中为NULL ELSE:artic'替换为@并为每个元素创建变量,我编辑它,但没有机会:(还是一样的错误!谢谢你的帮助!我会继续通过谷歌看看我是否能找到什么!
 insert into [table] (data) Values ((CASE WHEN @d IS NULL OR datalength(@d) = 0 THEN NULL ELSE @d END))