Foxtable(狐表)用户栏目专家坐堂 → 单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?


  共有34658人关注过本帖树形打印复制链接

主题:单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?  发帖心情 Post By:2008/9/15 10:41:00 [只看该作者]

帮助中前面说字符串常量要用双引号括起来,但在后面的表的查询语句中(例如find语句和select语句),使用的字符串常量又用单引号,我不太明白,什么时候用单引号,什么时候用双引号,或者在find语句和select语句中,在使用单引号表示的字符串的位置如果要使用一个变量名,可以吗?


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/15 11:38:00 [只看该作者]

以下是引用cpayinyuan在2008-9-15 10:41:00的发言:

帮助中前面说字符串常量要用双引号括起来,但在后面的表的查询语句中(例如find语句和select语句),使用的字符串常量又用单引号,我不太明白,什么时候用单引号,什么时候用双引号,或者在find语句和select语句中,在使用单引号表示的字符串的位置如果要使用一个变量名,可以吗?

1.
表达式用单引号表示字符串  比如表达式列,还有日常工作选项卡中排序与筛选功能组中的编辑按钮,还有SQL语句中都是单引号表示字符串
表达式效率非常高,和VB代码无关.
比如在筛选功能组中的编辑按钮里面输入 [产品] = 'PD01'  就会筛选出PD01这个产品 

2.
VB代码用双引号表示字符串.
Find、 Select 、GetUniqueValues 这些方法都是VB代码, 他们的参数是字符串,用双引号表示。
但是看帮助有说明,其中有一个参数是一个表达式。
比如 CurrentTable.Find("[产品] = 'PD01' ")  找出当前表产品为PD01的行
字符串参数"[产品] = 'PD01' "   双引号里面是一个表达式  [产品] = 'PD01'

3.用变量表示表达式中的字符串
如果想找出其他产品,比如PD02 PD03怎么办?
通过文本框或者组合框把 要筛选的产品传递给变量

Dim p As String = "PD02"         '这里PD02可以来自其他控件 
Dim Filter As String = "[产品] = ' "  &  p &  " ' "        
' 通过左拼右凑 凑出表达式。右边的字符串等效于 "[产品] = ' "   &   "PD02"   &   " ' "        等效于 "[产品] = 'PD02'"
Dim dr As DataRow = CurrentTable.Find(Filter)

[此贴子已经被作者于2008-9-15 11:45:20编辑过]

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19229 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/9/15 11:42:00 [只看该作者]

以下是引用lxl在2008-9-15 11:38:00的发言:

1.
表达式用单引号表示字符串  比如表达式列,还有日常工作选项卡中排序与筛选功能组中的编辑按钮,还有SQL语句中都是单引号表示字符串
表达式效率非常高,和VB代码无关.
比如在筛选功能组中的编辑按钮里面输入 [产品] = 'PD01'  就会筛选出PD01这个产品 

2.
VB代码用双引号表示字符串.
Find、 Select 、GetUniqueValues 这些方法都是VB代码, 他们的参数是字符串,用双引号表示。但是这个参数,又是一个表达式
比如 CurrentTable.Find("[产品] = 'PD01' ")  找出当前表产品为PD01的行
字符串参数"[产品] = 'PD01' "   双引号里面是一个表达式  [产品] = 'PD01'

3.用变量表示表达式中的字符串
如果想找出其他产品,比如PD02 PD03怎么办?
通过文本框或者组合框把 要筛选的产品传递给变量

Dim p As String = "PD02"         '这里PD02可以来自其他控件 
Dim Filter As String = "[产品] = ' "  &  p &  " ' "        ‘ 通过左拼右凑 凑出表达式
Dim dr As DataRow = CurrentTable.Find(Filter)

很清楚,学习了,谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/15 12:25:00 [只看该作者]

以下是引用lxl在2008-9-15 11:38:00的发言:

1.
表达式用单引号表示字符串  比如表达式列,还有日常工作选项卡中排序与筛选功能组中的编辑按钮,还有SQL语句中都是单引号表示字符串
表达式效率非常高,和VB代码无关.
比如在筛选功能组中的编辑按钮里面输入 [产品] = 'PD01'  就会筛选出PD01这个产品 

2.
VB代码用双引号表示字符串.
Find、 Select 、GetUniqueValues 这些方法都是VB代码, 他们的参数是字符串,用双引号表示。
但是看帮助有说明,其中有一个参数是一个表达式。
比如 CurrentTable.Find("[产品] = 'PD01' ")  找出当前表产品为PD01的行
字符串参数"[产品] = 'PD01' "   双引号里面是一个表达式  [产品] = 'PD01'

3.用变量表示表达式中的字符串
如果想找出其他产品,比如PD02 PD03怎么办?
通过文本框或者组合框把 要筛选的产品传递给变量

Dim p As String = "PD02"         '这里PD02可以来自其他控件 
Dim Filter As String = "[产品] = ' "  &  p &  " ' "        
' 通过左拼右凑 凑出表达式。右边的字符串等效于 "[产品] = ' "   &   "PD02"   &   " ' "        等效于 "[产品] = 'PD02'"
Dim dr As DataRow = CurrentTable.Find(Filter)

[此贴子已经被作者于2008-9-15 11:45:20编辑过]

回答非常详细,谢谢!再请教一下,在第3项(用变量表示表达式中的字符串),如果变量需要与其他字符串在一起,怎么写,例如:
"[产品] like '%PD%' ",怎么把PD02用变量名代替?请答复,谢了!


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/15 12:40:00 [只看该作者]

没明白你的意思,你给的表达式里面没有PD02啊.

如果要找出包含PD的产品,可以这样
Dim Filter As String = "[产品]  like '%PD%'" 
然后Find(Filter)就能实现.
[此贴子已经被作者于2008-9-15 12:40:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/15 12:45:00 [只看该作者]

以下是引用lxl在2008-9-15 12:40:00的发言:
没明白你的意思,你给的表达式里面没有PD02啊.

如果要找出包含PD的产品,可以这样
Dim Filter As String = "[产品]  like '%PD%'" 
然后Find(Filter)就能实现.
[此贴子已经被作者于2008-9-15 12:40:35编辑过]

不好意思,是我没说明白,我的意思,例如:Dim Filter As String = "[产品]  like '%PD%'" ,不是查询包含PD的产品,我想查询包含某个字符串的产品,也就是两个%%之间的部分用一个变量名代替,请指教,谢了!


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/15 13:05:00 [只看该作者]

还是左拼右凑
Dim s As String = 文本框值
Dim Filter As String = "[产品]  like '% "     &   s   &      " %' " 

经常用到的时间这样的道理
Dim Filter As String  = " [日期] = #"   & 日期变量 &  "#"         '既表达式为:  "[日期] = #2008-01-01#"

Dim Filter AS String = " [日期] Between #"  & 日期变量1 &  "# And #"  & 日期变量2  &  "#" 
                                   


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2008/9/15 13:07:00 [只看该作者]

以下是引用lxl在2008-9-15 13:05:00的发言:
还是左拼右凑
Dim s As String = 文本框值
Dim Filter As String = "[产品]  like '% "     &   s   &      " %' " 

经常用到的时间这样的道理
Dim Filter As String  = " [日期] = #"   & 日期变量 &  "#"         '既表达式为:  "[日期] = #2008-01-01#"

Dim Filter AS String = " [日期] Between #"  & 日期变量1 &  "# And #"  & 日期变量2  &  "#" 
                                   

终于看明白了,是引号太多了,刚才没有看出来谁给谁是一对儿,是把几个部分串成了一个完整的表达多,多谢!以后还要多向您请教!

[此贴子已经被作者于2008-9-15 15:41:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2008/9/15 13:41:00 [只看该作者]

学习!

 回到顶部
帅哥哟,离线,有人找我吗?
贺老六
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:485 积分:2996 威望:0 精华:10 注册:2008/9/12 14:37:00
  发帖心情 Post By:2008/9/15 14:40:00 [只看该作者]

lxl兄解释得非常好,收藏。
准备用在帮助文件中。

 回到顶部
总数 15 1 2 下一页