JETSQL字符串中单引号的问题
函数about_inverted_comma()
Dim rs作为新ADODB。记录集
Dim strSQL作为字符串
StrSQL = "select * from table 1其中g= ' ' "
其实很简单。如果要匹配空字符,可以连续使用两个单引号''
如果要匹配G字段中的单引号,可以将要匹配的单引号乘以2。
而两边仍然包含一侧带有单引号的字符,表示这是一个匹配的字符串。
例如,如果我想匹配一个单引号,我将使用下面的代码:
StrSQL = "select * from table 1其中g= ' ' ' ' "
要匹配两个单引号,请使用以下代码:
StrSQL = "select * from table 1其中g= ' ' ' ' "
rs。CursorLocation = adUseClient
rs。打开strSQL,CurrentProject。连接,1,1
调试。打印rs。记录计数
rs。关闭
结束功能
描述:
在JET SQL中,为了表示一个字符串,首先我们需要用两个引号将字符串括起来。例如,“abc”,JET SQL编译器将其解释为字符串abc。而当你需要表示单引号'',如果只用了三个引号'',JET SQL的编译器将无法解析识别中间的引号是正常字符还是特殊字符(如果是特殊字符,编译器会认为左右引号有关系)。
为了解决这种情况,在JET SQL中使用转义字符(这一概念在其他语言中也有)来转义特殊字符。在''''中:第一个和第四个引号中间是一个字符串,第二个引号是转义符,说明它后面的第三个'不是特殊字符,是普通引号!所以' ' ' JET SQL引擎编译的输出就是一个普通的单引号'
此外,在VBA也有关于字符串表达式的相同概念。
在VBA,为了表示一个字符串,首先我们需要用两个引号将字符串括起来。例如,“abc”,VBA编译器将其解释为字符串abc。当需要表示单引号“时,如果只使用了三个引号" ",VBA编译器将无法解析识别中间的引号是正常字符还是特殊字符(如果是特殊字符,编译器会认为左右引号有关系)。
为了解决这种情况,在VBA使用转义字符(这个概念在其他语言中也有)来转义特殊字符。" " " ":第一个和第四个引号中间是一个字符串,第二个引号是一个转义符,说明它后面的第三个"不是特殊字符,而是一个普通的引号!所以" " " " VBA编译器编译的输出就是一个普通的双引号"
在日常操作中,为了避免双引号的问题,我们也可以直接写一个函数来解决问题。
函数CheckSQL(ByVal strSQL As String)As String
如果IsNull(strSQL) = False,则
strSQL = Replace(strSQL,"'","''")
Else
strSQL = " "
如果…就会结束
CheckSQL = strSQL
结束功能
该功能的应用如下:
函数CheckSQL(ByVal strSQL As String)As String
如果IsNull(strSQL) = False,则
strSQL = Replace(strSQL,"'","''")
Else
strSQL = " "
如果…就会结束
CheckSQL = strSQL
结束功能
函数about_inverted_comma()
Dim rs作为新ADODB。记录集
Dim strSQL作为字符串
字符串形式的Dim条件
StrCondition = "条件with "(单引号)"
StrSQL = " select * from table 1 where g = ' " & str condition & " ' "
上面的语句可能会导致JET SQL错误,所以下面的函数用来过滤单引号。
StrSQL = " select * from table 1 where g = ' " & checksql(str condition)& " ' "
rs。CursorLocation = adUseClient
rs。打开strSQL,CurrentProject。连接,1,1
调试。打印rs。记录计数
rs。关闭
结束功能
位律师回复
0条评论