以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]LIKE匹配通配符的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98620)

--  作者:hiliuyong
--  发布时间:2017/4/2 15:54:00
--  [求助]LIKE匹配通配符的问题
比如   
?“我是老王” LIKE "*老王*"
返回是TRUE
这是个匹配“老王”这个字,语法没有问题

但是
?“[配置信息]”  like "*[*"
我是想匹配里面含 [ 这个字符的
语法报错
是不是[  是正则语法的问题
如果是,我还是想匹配这个符号,改如何做呢?

--  作者:rambowhuang
--  发布时间:2017/4/2 16:06:00
--  
参考一下!

SQL表达式的语法差异

Foxtable中所有和动态加载的相关的属性和方法,包括那些直接统计或处理后台数据的方法,其条件表达式的语法均为SQL语法,且表达式中的表名和列名必须和后台数据库保持一致。
采用的数据源不同,SQL语法会有一些细节产别。
关于SQL,后面有专门一章介绍,现在先介绍一下SQL表达式和常规表达式的几个主要差异:

1、不能使用*作为通配符,只能使用%作为通配符,例如:

DataTables("客户").LoadFilter = "公司名称 Like \'%贸易%\'"
DataTables(
"客户").Load()

2、 如果数据源是SQL Server,日期用单引号括起来,而不是用#,例如:

DataTables("订单").LoadFilter = "日期 = \'" & Date.Today & "\'"
DataTables(
"订单").Load()

如果是内部表或Access数据源,日期还是用符号#括起来:

DataTables("订单").LoadFilter = "日期 = #" & Date.Today & "#"
DataTables(
"订单").Load()

3、SQL Server中的逻辑列,用0表示False,1表示True,例如加载已经结账的订单:

DataTables("订单").LoadFilter = "结账 = 1"
DataTables(
"订单").Load()

如果是如果是内部表或Access数据源,还是用True和False表示逻辑值,例如:

DataTables("订单").LoadFilter = "结账 = True"
DataTables(
"订单").Load()

4、常规表达式的函数非常有限,而SQL的函数更加丰富,但是不同的数据源,函数有些差别。

如果数据源是SQL Server,可以使用以下函数:
http://www.foxtable.com/help/topics/1827.htm

如果是内部表或Access数据源,可以使用以下函数:
http://www.foxtable.com/help/topics/0692.htm

例如,用SQLCompute统计2013年的销售数量:

Dim
Val As Integer
Val
= DataTables("订单").SQLCompute("Sum(数量)", "Year(日期) = 2013")

如果用Compute统计,表达式会长很多,而且必须已经加载2013年的全部数据:

Dim Val As Integer
Val
= DataTables("订单").Compute("Sum(数量)", "日期 >= #1/1/2013# And 日期 <= #12/31/2013#")


--  作者:有点色
--  发布时间:2017/4/2 19:37:00
--  

msgbox("[配置信息]"  Like "*[*".replace("[", "[[]"))

 

特殊字符,要加上 [特殊字符]


--  作者:hiliuyong
--  发布时间:2017/4/3 10:25:00
--  
牛,谢谢你!