|
楼主 |
发表于 2016-2-17 13:23
|
显示全部楼层
本帖最后由 autumnalRain 于 2016-2-17 13:32 编辑
SQL查询中的特殊字符处理
******************************************************************************************************************************************************************
1、SQL查询过程中,单引号“'”是特殊字符。所以在查询的时候要转换成双单引号“''”。在sql中'是条件符,如果条件中还用到'就需要用两个了。一个作为条件符,一个作为字符本身。记住是两个'不是一个"。如select * from a where type="j's dog”报错,处理方法为:select * From a where A_ID='j''s dog'
2、但这只是特殊字符的一个,在实际项目中,发现对于like操作还有以下特殊字符:下划线“_”,百分号“%”,方括号“[]”以及尖号“^”。
其用途如下:
下划线:用于代替一个任意字符(相当于正则表达式中的 ? )
百分号:用于代替任意数目的任意字符(相当于正则表达式中的 * )
方括号:用于转义(事实上只有左方括号用于转义,右方括号使用最近优先原则匹配最近的左方括号)
尖号:用于排除一些字符进行匹配(这个与正则表达式中的一样)
下表显示了括在方括号内的通配符的用法。
符号 含义
LIKE '5[%]' 5%
LIKE '5%' 5 后跟 0 个或更多字符的字符串
LIKE '[_]n' _n
LIKE '_n' an, in, on (and so on)
LIKE '[a-cdf]' a, b, c, d, or f
LIKE '[-acdf]' -, a, c, d, or f
LIKE '[ [ ]' [
在SQL中方括号作为转义符使用,比如如果列字段中存在这样的字段时 速度米/秒,写语句时应规范为 [速度米/秒] 或者`速度米/秒` 表示这里的/是作为字符使用,而不是特殊字符
使用用列别名时,如果别名中包含空格或其它特殊字符,则列别名必须放在单引号,双引号或方括号中
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL列字段命名的限制:
当使用SQL语句的时候,必须避免列字段中使用下面的特殊字符:
空格,双引号(")、撇号(')、重音符(`),数字符号(#),百分号(%)、大于号(>),小于号(<),叹号(!),句号(.),方括号([or]),号号(*),美元符($),分号(;),脱字符(^),圆括号((or)),加号(+),反斜杠(\or/)等
如果在源数据表的列字段使用了这些特殊符号,那么在使用SQL语句列出列字段的数据时,就会发生错误。
***********************************************************************************************************************
SQL语句中注意:文本变量(和文本常量)要用单引号,数字类型的不能加单引号,日期类型的需要两边加#:
***********************************************************************************************************************
SQL = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]='" & SVoucher & "' And [项目名称]= '" & SProject & "'"
Sql = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]=""" & SVoucher & """ And [项目名称]= """ & SProject & """"
sql = "Select * from table1 Where 日期 between #" & ld_1 & "# and #" & ld _2 & "# "
-------------------------------------------------------------------------------------------------------------------------------------------
第二句中""相当于一个单引号作用
|
|