从SQL Insert语句中删除NULL值和相应的列名

  • 本文关键字:NULL Insert SQL 语句 删除 sql null
  • 更新时间 :
  • 英文 :


我经常要处理别人写的sql。一个典型的sql插入语句可以包含5-6个非种子值(NULL(。

一个例子:

INSERT INTO Texts (Text_EN, Text_NO, Text_DK, Text_SV) VALUES ('English', NULL, NULL, 'Svenska')

我一直在寻找一种方法来将这样的行转换为:

INSERT INTO Texts (Text_EN, Text_SV) VALUES ('English', 'Svenska')

所以我想完成的是:

  • 查找NULL值
  • 查找与这些值对应的列
  • 删除这些值和列名

我一直在尝试各种具有正lookbehinds的正则表达式,因为我认为我需要先找到NULL,但没有骰子。也许已经有另一种方法了?

我也一直在检查sql格式化程序,但它们似乎没有这个特定的功能。

您可以通过使用动态SQL来实现。例如,为2个输入数组类型参数写入函数。其中一个数组用于字段,另一个数组则用于值。在函数内部,您可以为动态sql声明两个字符串类型的变量,并使用一个用于循环操作。在此循环中,通过if操作检查值。如果值为null,则不要添加到字符串值和字段中,否则添加。将循环设置为主字符串变量"insert into table"后,执行动态SQL。简短示例:

declare 
v_sql varchar(1000);
v_fields  varchar(1000);
v_valuesm  varchar(1000);
begin 
-- for-loop statement 
-- if check generate striong variables for fiedls and values 
-- end of for-loop statement 
v_sql = 'INSERT INTO Texts (' + v_fields + ') VALUES (' + v_values + ')';
-- executing your v_sql

相关内容

  • 没有找到相关文章

最新更新