起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3775|回复: 2

[结贴] 表达式编辑器里比较字符串只能用=号吗

[复制链接]

14

主题

39

帖子

115

积分

初级会员

Rank: 2

积分
115
QQ
发表于 2014-8-5 12:45:15 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
表达式编辑器里比较字符串只能用=号吗,能不能用like或者in这种比较范围的,因为我左边获取的角色可能是多个值啊,右边写死的就一个值
55.jpg

欢迎大家关注本店铺微信公众号码:雪花淘衣坊!http://recall.taobao.com

242

主题

1418

帖子

2325

积分

金牌会员

批判主义者

Rank: 6Rank: 6

积分
2325
QQ
发表于 2014-8-5 13:10:11 | 显示全部楼层
1.  算数:+, -, *, /

2.  比较:=, >, <, >=, <=, <>, like, in, exists, is null, is not null, between

3.  逻辑: and, or, not

4.  其他:union, case ... when ... then ... else ... end

评分

参与人数 1 +5 收起 理由
jishuang + 5 赞一个!

查看全部评分

如果我说对了 请别忘记点赞.
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-8-5 21:34:43 | 显示全部楼层
表达式编辑器里的操作符是 可以用 like 或者 in 的 ,更多的详细你可以参考  API,里面写的很详细;
帮你贴一下吧。

KSQL是一个语法上靠近SQL-92的本体数据操作语言。

一.KSQL语法

1.  SELECT语法

SELECT [DISTINCT] <查出列表>

       FROM <概念1> <别名1> [[OPTIONAL] JOIN <概念2> <别名2> ON <条件> ...]

        [WHERE <条件>]

        [GROUP BY <分组列表> [HAVING <条件>]]

        [ORDER BY <排序列表>]

        [UNION ...]

        [LIMIT ..]

1)    案例:

¨         SELECT p.* FROM SA_OPPerson p WHERE p.sName LIKE 'zhang%'

¨         SELECT p, case when p.sCode = 'ogn' then '机构' when p.sCode = 'dpt' then '部门' else '其他' end AS type FROM SA_OPPerson p

¨         SELECT p.* FROM SA_OPPerson p WHERE p.sCode = peratorCode()

¨         SELECT p, o FROM SA_OPPerson p JOIN SA_OPOrg o ON p.sMainOrg = o

¨         SELECT p, o FROM SA_OPPerson p OPTIONAL JOIN SA_OPOrg o ON p.sMainOrg = o WHERE p.sCode = 'PSN01'

¨         SELECT COUNT(p.sName), MAX(p.sLevel), p.sMainOrgID FROM SA_OPPerson p WHERE p.sName like 'ZH%' GROUP BY p.sMainOrgID HAVING COUNT(p.sName)> 5

¨         SELECT p, p.sName, p.sCode FROM SA_OPPerson p WHERE p.sName LIKE 'ZH%'

            UNION

            SELECT o, o.sName, o.sCode FROM SA_OPOrg o WHERE o.sFID LIKE '/OGN01%'



2.  INSERT语法

        INSERT INTO <概念> <别名> (<修改关系列表>) VALUES (<插入的值>)

        INSERT INTO <概念> <别名> (<修改关系列表>) <子查询>

        INSERT INTO <多值关系> (<概念名>, <关系名>) VALUES (<插入的值>)

1)    案例:

¨         INSERT INTO SA_OPPerson p (p, p.sName, p.sCode) VALUES ('PSN01', :name, :code)

¨         INSERT INTO SA_OPPerson p (p, p.sName, p.sCode) (SELECT :newid , p1.sName, p1.sCode FROM SA_OPPerson p1 WHERE p1.sName = 'ZHANGSAN')

INSERT INTO Person.hasDog (Person[0], Person[1], Person.hasDog) VALUES('P1', 'P2', 'D1') //这里假设Person是联合主键,且Person.hasDog是多对多关系

2)    注意:

最后一种语法主要用于插入一条多对多关系,如:假设Person.hasDog是多对多关系,存在关系表中,则INSERT INTO Person.hasDog (Person, Person.hasDog) VALUES ('P1', 'D1')



3.  UPDATE语法

UPDATE <概念> <别名> SET <关系1> = <值1> [, <关系2> = <值2> ...] WHERE <条件>

              UPDATE <概念> <别名> SET <关系> = <子查询>  WHERE <条件>

1)    说明:略

2)    案例:

¨         UPDATE SA_OPPerson p SET p.sName = 'ZHANGSAN', p.sCode = 'ZS' WHERE p = 'PSN01'

¨         UPDATE SA_OPPerson p SET p.sName = (SELECT o.sName FROM SA_OPOrg o WHERE o = 'OGN01')



4.  DELETE语法

DELETE FROM <概念> <别名> WHERE <条件>

              DELETE FROM <多值关系> WHERE <条件>

1)    案例:

¨         DELETE FROM SA_OPPerson p WHERE p.sName LIKE 'ZH%'

¨         DELETE FROM Person.hasDog WHERE Person = 'PSN01' //这里假定Person.hasDog 为多对多关系





二.KSQL特性

1.  KSQL中关键字、KSQL函数大小写不敏感,但概念、关系、别名、变量名及表达式函数名大小写敏感

2.  字符串使用单引号', 如:WHERE SA_OPPerson = 'PSN01'

3.  支持新增(INSERT), 删除(DELETE),修改(UPDATE)及查询(SELECT)的操作

4.  FROM支持连接(JOIN)和可选连接(OPTIONAL JOIN, 等价于SQL的LEFT JOIN)

5.  支持UNION,CASE WHEN以及子查询

6.  支持命名参数,以':'开头,如:WHERE SA_OPPerson.sName = :userName

7.  支持表达式函数,表达式函数在内存中计算,以':'开头,如:WHERE SA_OPPerson.sCode = peratorCode()

8.  支持本地SQL函数,以SQL.开头,如:SQL.datalength(SA_OPPerson.sName)  AS nlen FROM SA_OPPerson SA_OPPerson WHERE SA_OPPerson.sAge > 20

9.  KSQL语句中必须给出概念的别名,可以与概念同名,如:SELECT SA_OPPerson.sName FROM SA_OPPerson SA_OPPerson

10.              目前KSQL中的标识符在表达式中全局唯一,暂不支持标识符作用域

11.              支持分组(GROUP BY),排序(ORDER BY )

12.              支持分页,格式为LIMIE start, rows。start表示从第几条开始取,从0开始;rows表示取多少条,-1表示不限制。如:

a)         SELECT p.* FROM SA_OPPerson p LIMIT 0, 10   //从第0条开始,取10条,就是取开始的10条;

b)        SELECT p.* FROM SA_OPPerson p LIMIT 1, -1    //从第1条开始,取所有记录,即跳过最开始的一行记录

13.              支持DISTINCT 如:SELECT DISTINCT p.sName FROM SA_OPPerson p

14.              以下标的方式支持对联合主键部分列的访问。如:假设概念Cat所映射的表的主键是联合主键SID1,SID2,则Cat[0]可以方位SID1, Cat[1]可以访问SID2

            SELECT c.* FROM Cat c WHERE c[0] = 'cat1' AND c[1] LIKE 'c%'

            

三.KSQL支持的操作符

1.  算数:+, -, *, /

2.  比较:=, >, <, >=, <=, <>, like, in, exists, is null, is not null, between

3.  逻辑: and, or, not

4.  其他:union, case ... when ... then ... else ... end

   

四.KSQL支持的函数

1.  字符串: concat, instr, substring, ltrim, rtrim, trim, length, upper, lower, replace

2.  数值: mod, ceil, pi, rand, square, ln, log10, abs, sin, cos, tan, cot, asin, atan, exp, floor, sqrt, sign, power, round

3.  集合: count, max, min, sum, avg, countAll

4.  时间日期:dateTimeToDate, dateTimeToString, TimeToString, DateToString, stringToDateTime, stringToDate, stringToTime, getYear, getMonth, getDay, getHour, getMinute, getSecond

   


向前进,向前进,我们……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-5-9 18:18 , Processed in 0.063517 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表