欢迎来到天天文库
浏览记录
ID:24513742
大小:50.00 KB
页数:3页
时间:2018-11-15
《基于前端的结构化查询初探》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于前端的结构化查询初探 :Javascript环境下,以JSON数据格式为对象进行数据的前端存储及操作,以此实现“SQL前端应用”。使用正则表达式这一强大文本分析工具对SQL语句进行结构化解析;通过构建一系列对象及函数,实现对JSON对象的结构化查询。以此构造出JSONSQL引擎,支持在前端使用标准的结构化查询语句,对JSON数据实现查询、结构化输出等功能。 关键词:前端;Javascript;JSON;SQL;正则表达式 :TP393:A:1009-3044(2012)08-1723-03 StudyinentofNetentCAPFS
2、C,Chengdu610015,China) Abstract:OntheenvironmentofJavaScript,themediumatofJSONstoreandoperatedataplement"anapplicationofplementstructuredqueryofJSONobject.ToconstructanengineofJSONSQLplementJSONdatainquiryandstructuredoutput. Keye:’kitty’,age:20,male:false}, {id:1,name:’jac
3、k’,age:18,male:true},{id:2,name:’simth’,age:18,male:true}]; 例1:构建一个名为dbObj的JSON对象 例1中的dbObj对象可以看成由DB中的全部或部分数据生成的一个JSON对象。 1.1.1.2访问方式 访问JSON对象简单、清晰,可以使用“.”或“[]”的方式访问,示例如下: vart1=dbObj[2].name;vart2=dbObj[0][’id’]; document.th0 例2:JSON对象的访问方式 1.1.2正则表达式 正则表
4、达式(RegularExpression,缩写为RE)加上通用模式表达法(generalpatternnotation)能够添加、删除、分离、叠加、插入和修正各种类型的文本和数据[5]。本文主要是在Javascript环境中使用正则表达式。 1.1.2.1定义方法 在Javascript语言环境中,需先定义一个RE对象;可以使用“neyReg=neyRegE=/d+/; 例3:RE的定义 1.1.2.2两种属性 本文中会用到两种RE属性:1)全局(Global,简写’g’);2)忽略大小写(Ignore,简写’i’)。打开全局属
5、性时,RE会进行多次匹配,输出全部匹配结果;否则一次匹配成功后即退出。打开忽略大小写属性时,RE在对英文字母匹配时将忽略大小写。示例如下: varmyReg=neyRegE=/d+/gi; 例4:设置RE属性 1.1.2.3环视 本文在使用RE处理文本时,将会多次使用到顺序环视(Lookahead,环视的一种)功能中的肯定型顺序环视(用“(?=…)”序列表示)。需要注意的是,Javascript不支持逆序环视。 1.2SQLkNum、返回字段集记为CallBackFields。 1.2.3建立条件式 在有条件子句的S
6、QL语句中,条件往往由多个运算符、函数组成;因此,有必要建立一个机制,在单独条件与多重条件的情况下均能正确有效的运行。 SQL语句的条件子句可看作是一个以“elike“j%”andage=18;”,简称ConditionExp。 1.2.3.1运算符的处理 条件子句中可以使用的运算符对应到Javascript脚本语言环境中可以分为三类: 第一、直接对应关系,如“>”、“<”、“>=”、括号等。此类运算符不用转换。 第二、间接对应关系,如“=”、“and”等。此类运算符直接使用RE替换即可。由此,Condition
7、Exp变型为“namelike“j%”age= =18;” 第三、无对应关系,如“like”、“betelike“j%””;如果“like”之前有多个字段名也能正确匹配。 其次,以字符串“namelike“j%””(简称str)为参数带入Func函数进行处理,流程如下:函数脚本为: functionLike(obj,regStr){ varReg=nep;nbsp; if(Reg.test(obj[each])){ returntrue; } } returnfalse; } 需要注意的是,每
8、一个“无对应关系”的运算符都需要定义一
此文档下载收益归作者所有