数据库操作的条件

这里说明“数据库操作”设定中,有关“条件”的设定方法。


内容


设置条件

“条件”是为数据库表的操作记录设置筛选条件,使数据库的操作仅对满足条件的记录进行。

1号选择框,选择条件对象的列名。

2号选择框,选择操作符号。可以选择的操作符号是“=”、“>”、“<”、“>=”、“<=”、“<>”、“like”、“in”等8个。

“=”是等于,“>”是大于,[<]是小于,“>=”是大于等于,[<=]小于等于,“<>”是不等于。

“like”是部分匹配,“in”存在匹配。欲了解更多,请参考复杂的条件

3号选择框,指定条件的值的种类。由所选择的种类,4号的输入区域会发生变化。

值的种类为“固定值”时,4号区域根据列的要求输入数值或者字符串。
值的种类为“变量”时,4号区域输入HMI的变量名,可以按“设备树”按钮,选择变量。
值的种类为“指定时间”时,4号区域输入时分秒的时间。
值的种类为“SQL语句”时,4号区域输入SQL语句。
值的种类为“isNULL”时,无须指定值。在2号选择框选择“=”以外时,以notNULL动作。

指定时间时,具体设置方法,请参考复杂的条件

在设定4号区域时,请注意以下几点:

3号选择框选择“变量”以外时,在4号区域即使设定变量名,也作为一个字符串常数处理。

3号选择框选择“固定值”时,在4号区域不要输入单引号,双引号等SQL语句中使用的符号。

3号选择“SQL语句”时,4号为高度自由的SQL语句,请小心使用。

关于“SQL语句”的语法,请参阅PostgreSQL数据库的帮助文档。

5号的选择框,为条件的组合,可以选择AND和OR操作符。


复杂的条件

在这里,我们描述了稍微更复杂的条件。

LIKE(LIKE操作符)

2号选择框可以选择的操作符,可以进行字符串的部分匹配。如果选择LIKE,基本上在3号选择“固定值”。

请参考以下的设定例:

语句 3号的输入值 结果
'WEB' LIKE 'WEB' WEB true
'WEB' LIKE 'E' E false
'WEB' LIKE 'W%' W% true
'WEB' LIKE 'WE%B' WE%B true
'WEB' LIKE '_E_' _E_ true
'WEB' LIKE 'WE_B' WE_B false

上面的表格中,是对于字符串“WEB”的几种LIKE操作的匹配结果。

如果指定值中不包含百分号(%)或下划线(_),则操作等同于等于[=]操作。

下划线(_)代表任何单个字符,百分号(%)代表零个或多个任意字符。

不推荐使用LIKE操作符来设定与时间相关的匹配,如_timestamp_ LIKE“1997-07-26%”,虽然执行没有问题,但缓慢。

IN(IN操作符)

2号选择的IN操作符,用于进行属于的操作。使用时,基本是在3号中输入SQL语句。

使用IN操作符,需要SQL方面的知识。

如果需要使用多个AND和OR混合的操作,使用IN操作符,可以简化的条件的设定。

以下是使用方法的例:

列名a(下文中列a)的值在20个以上,列b的值为1至5或10为条件时

如果不使用IN操作符,则条件的设定如下:

条件语句:a >= '20' and b = '1' or a >= '20' and b = '5' or a >= '20' and b = '10'

如果使用IN操作符,则条件的设定如下:

条件语句:a <= '20' and b in( '1' , '5' , '10' );

显然,使用IN操作符,可以简化条件语句的设定。

此外,在输入值中虽然可以select语句,但执行时不会进行值的检查。如果SQL语句设定不当,会导致发生严重的错误。

因此不推荐在输入值中使用select等语句。


指定时间

如在3号选择“指定时间”,4号区域中根据最上方选择框的设定,显示3种类型的输入区域。

在选择“现在”,“今日”、“前周”和“前月1日”,和“固定时刻”三种类型时,显示不同的输入区域。

当选择“现在”、“今日”、“前周”、“前月1日”时,显示的被红色围的部分用于设定从选择的时间经过的时间。输入“-”(负号)指定过去的时间。

当选择“今日”、“前周”、“前月1日”时,显示的被蓝色包围的部分用于设定时刻。输入“-”(负号)指定过去的时间。

当选择“固定时刻”时,显示的被绿色包围的部分用于指定一个固定的时间。


条件设定方法

这里对新建条件做一些说明。


设置范围

设定“1至10之间”,“从昨日到今日为止”等指定范围的条件时,可以使用“>”、“<”、“>=”,“<=”等比较符号,如下图:

改写数据

当数据库操作为“更新”时,符合条件的所有的记录,将用“写入数据”列名中设定的数据改写。

将a的值为1的记录改写为-1时的设定方法:

数据库操作例:update dbo.example_table set a = '-1' where a = '1';