您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> ACCESS >> 辅导 >> 正文    
  JETSQL字符串中单引号的问题 【注册男护士专用博客】          

JETSQL字符串中单引号的问题

www.nanhushi.com     佚名   不详 

  Function about_inverted_comma()

  Dim rs As New ADODB.Recordset

  Dim strSQL As String

  strSQL = "select * from 表1 where g=''"

  '其实非常简单,如果要匹配空字符,可以连续用两个单引号 ''

  '如果要匹配 g 字段中得一个单引号,你可以将要匹配得单引号乘以 2 ,

  '而两边仍然以一边一个单引号将字符包含起来,表示这是匹配字符串。

  '比如我要匹配一个单引号就用以下代码:

  strSQL = "select * from 表1 where g=''''"

  '要匹配2个单引号用以下代码:

  strSQL = "select * from 表1 where g=''''''"

  rs.CursorLocation = adUseClient

  rs.Open strSQL, CurrentProject.Connection, 1, 1

  Debug.Print rs.RecordCount

  rs.Close

  End Function

  说明:

  在JET SQL中,为了表示字符串,首先我们需要用两个引号把字符串引起来。例如 'abc', JET SQL编译器把它解释为字符串abc。而当您需要表示一个单引号 ' 的时候,如果只用三个引号 ''',JET SQL的编译器会无法解析辨认中间的引号是一个正常的字符还是一个特殊字符(如果是特殊字符,编译器会认为和左右的两个引号之间有关系)

  为了解决这种情况,JET SQL中使用转义字符(其他语言中也有这个概念)对特殊字符进行转义。在 '''' 中:第一个和第四个引号高速编译器中间是字符串,第二个引号是一个转义字符,表示后面的第三个 ' 不是一个特殊字符,而是一个普通的引号!所以'''' 经过JET SQL引擎编译后的输出是一个普通的单引号 '

  另,关于 VBA 中的字符串表达式也有相同的概念

  在VBA中,为了表示字符串,首先我们需要用两个引号把字符串引起来。例如 "abc", VBA编译器把它解释为字符串abc。而当您需要表示一个单引号 " 的时候,如果只用三个引号 """,VBA的编译器会无法解析辨认中间的引号是一个正常的字符还是一个特殊字符(如果是特殊字符,编译器会认为和左右的两个引号之间有关系)

  为了解决这种情况,VBA中使用转义字符(其他语言中也有这个概念)对特殊字符进行转义。在 """" 中:第一个和第四个引号高速编译器中间是字符串,第二个引号是一个转义字符,表示后面的第三个 " 不是一个特殊字符,而是一个普通的引号!所以"""" 经过VBA编译器编译后的输出是一个普通的双引号 "

  在日常操作中,为了避免出现双引号的问题,我们还可以直接写一个函数来解决问题

  Function CheckSQL(ByVal strSQL As String) As String

  If IsNull(strSQL) = False Then
  strSQL = Replace(strSQL, "'", "''")

  Else
  strSQL = ""

  End If

  CheckSQL = strSQL

  End Function

  该函数应用如下:

  Function CheckSQL(ByVal strSQL As String) As String

  If IsNull(strSQL) = False Then
  strSQL = Replace(strSQL, "'", "''")

  Else
  strSQL = ""

  End If

  CheckSQL = strSQL

  End Function

  Function about_inverted_comma()

  Dim rs As New ADODB.Recordset

  Dim strSQL As String

  Dim strCondition As String

  strCondition = "带 ' (单引号)的条件"

  strSQL = "select * from 表1 where g='" & strCondition & "'"

  '上述语句可能导致 JET SQL 错误,下面使用函数过滤单引号

  strSQL = "select * from 表1 where g='" & CheckSQL(strCondition) & "'"

  rs.CursorLocation = adUseClient

  rs.Open strSQL, CurrentProject.Connection, 1, 1

  Debug.Print rs.RecordCount

  rs.Close

  End Function

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。