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

“条件”是为数据库表的操作记录设置筛选条件,使数据库的操作仅对满足条件的记录进行。
在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';



