💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
9 **补充说明** ### 9.1 @if()用法 Sqltoy针对一些特殊业务场景给sql处理预留一个超级用法: ![](https://img.kancloud.cn/e2/21/e22165fb8be2fbf5fdcd82fdbca3d440_724x302.png) @if()支持两种模式的逻辑判断: * 单逻辑判断:@if(:paramName>=value) * 双逻辑判断:@if(:paramName1>=value1 && :paramName2<=value2) 比较符号支持:>、>=、==、<、<=、!=、<>;逻辑运算符:&& 和 ||、include、in、out * 时间比较:@if(:paramName>=now()+x) 或@if(:paramName>=now()-x) 表示时间的:now()、nowtime()、${.now} 表示日期的:day()、sysdate()、${.day} ![](https://img.kancloud.cn/e5/c1/e5c11a995d3c5770b889d278524873c9_1005x277.png) * include包含判断:@if(:statusAry include 1),如果statusAry是数组其中包含1返回true,如果statusAry值是一个字符串,返回statusAry. contains(“1”) 的结果。 * 取size:@if(size(:statusAry)>1)) ,即通过size(:参数名称)模式取得集合数组的长度 * In 用法: @if(:status in ‘1,2,3’) 当status属于1或2或3时返回true * out 用法:@if(:status out ‘1,2,3’) 当status不属于1或2或3时返回true ### 9.2 @fast 用法 @fast()写在sql语句中,非分页等查询框架会自动剔除@fast,因此不影响其他查询。 ### 9.3 @blank()用法 @blank() 目的是为非条件部分的语句虚构出一个参数,让其符合sqltoy的sql组织规则 @blank()应该很少会用到,有了@if() 后@blank意义不大了 ![](https://img.kancloud.cn/06/d3/06d3bb423628b4863bc6600d3982c1d6_577x206.png) * 当sexType 为null的时候按照sqltoy的#\[\]判断逻辑#\[@blank(:sexType) t.SEX\_TYPE\] 这部分会被剔除,当sexType不为null的时候则会变成@blank(:sexType) t.SEX\_TYPE, @blank(:sexType) 框架自动会变成空白,则不影响sql的执行,灵活应用则可以实现非常灵活的sql组织。 ### 9.4 @value()用法 @value(:paramName) 类似于@blank(:paramName),唯一的区别是当@value(:paramName) 会直接显示paramName对应的值。 ### 9.5 @loop()用法 * @loop()用于sql动态循环组织字段、条件,一般针对数组或集合,且不适用于in的场景。 * 分三种格式 * @loop(:loopParam,loopContent) * @loop(:loopParam,loopContent,linkSign) * @loop(:loopParam,loopContent,linkSign,startIndex,endIndex) 范例:注意@blank并非必须,是因为要融合其他语句(如and 和括号等)。 ![](https://img.kancloud.cn/57/4c/574c1f0a1a8cb204de2075f578cd811f_1368x387.png) 调用范例: ![](https://img.kancloud.cn/26/af/26af202250abae8ca7d241d1b6933087_1164x402.png) * 注意事项 @loop(:loopParam,loopContent,linkSign) 是通过逗号分隔内部参数的,如果loopContent中包含逗号等,建议用双引号""或大括号{},来包裹内容 @loop(:staffIds," t.STAFF\_ID=':staffIds\[i\]' "," or ")