SQL语句中的特殊字符 单引号' 方括号[] 和Like中的特殊字符:下划线 _ 、百分号%、方括号[]、尖号^
SQL语句中的特殊字符:
1、SQL语句中的特殊字符 单引号' 方括号[]
Select * from [Test Order] --中间有空格,用[] 将表名包裹起来,告诉语法分析器,[]号内的是一个完整的名称
--Field1字段的值为 Te'st
Select * from Test where Field1 = 'Te''st' --用两个 ' 符号代替一个
--表名:Test] Order
Select * from [Test]] Order] --使用 "]]" 代替 "]"
2、Like中的特殊字符:下划线 _ 、百分号%、方括号[]、尖号^
用途说明:
下划线_:用于代替一个任意字符(正则表达式 ? )
百分号%:用于代替任意数目的任意字符(正则表达式 * )
方括号[]:用于转义(左方括号用于转义,右方括号优先原则匹配最近的左方括号)
尖号^:用于排除一些字符进行匹配
检索字符 检索方式 说明
a_b... a[_]b% 用方括号包裹 下划线 _
a%b... a[%]b% 用方括号包裹 百分号
a[b... a[[]b% 用方括号包裹 左方括号
a]b... a]b% 右方括号的检索无须转义
a[]b... a[[]]b% 只用方括号包裹 左方括号,右方括号正常检索
a[^]b... a[[][^]]b% 用方括号包裹 左方括号,用方括号包裹 尖号,右方括号无须转义
a[^^]b... a[[][^][^]]b% 用方括号包裹 左方括号,用方括号包裹 尖号,用方括号包裹 尖号,右方括号无须转义
特殊情况关于“=”号的替换如下:a]=b a[]]->b 用方括号包裹 左方括号,=号 用“->”代替“=”
使用示例:select * from table1 where Field1 like '%[_]%'
SQL Server中常用的通配符:
1、百分号%: 代表零个、一个或多个字符。在模糊搜索中,可以将百分号与其他字符组合使用,以匹配不确定的文本。
例如,LIKE 'a%' 表示以字母 'a' 开头的任何字符串。
SELECT * FROM TableName WHERE ColumnName LIKE 'a%';
2、下划线_: 代表一个单一的字符。
与百分号类似,下划线用于匹配单个字符的位置。
SELECT * FROM TableName WHERE ColumnName LIKE '_a%';
3、 方括号[]: 用于指定字符集合中的一个字符。可以在方括号中使用连字符表示范围。
例如,[a-e] 表示字符集合中的 'a'、'b'、'c'、'd' 和 'e' 中的任意一个字符。
SELECT * FROM TableName WHERE ColumnName LIKE '[a-c]%';
4、脱字符^: 用于指定不在字符集合中的字符。
例如,[^0-9] 表示除了数字之外的任意字符。
SELECT * FROM TableName WHERE ColumnName LIKE '[^0-9]%';
这些通配符通常与 LIKE 关键字一起使用,用于在 SQL 查询中进行模糊搜索。
请注意,通配符的使用可能会影响查询性能,特别是在处理大量数据时,因此应慎重使用。
在MySQL 中的用法:
使用方式与 SQL Server 中基本相似,但有一些微小的差异。通常使用 REGEXP 或 RLIKE 关键字进行正则表达式匹配,而不是像 SQL Server 中那样使用方括号 [] 和 ^。
百分号%: 用于匹配零个、一个或多个字符。
SELECT * FROM TableName WHERE ColumnName LIKE 'a%';
下划线_: 用于匹配单个字符。
SELECT * FROM TableName WHERE ColumnName LIKE '_a%';
方括号[]: MySQL 中使用的是 LIKE 和 REGEXP,而不是方括号。例如,[a-c] 在 MySQL 中可以使用 REGEXP '^[a-c]' 来实现。
SELECT * FROM TableName WHERE ColumnName REGEXP '^[a-c]';
脱字符^: MySQL 中没有直接等效的脱字符。可以使用 NOT 结合 REGEXP 实现类似的效果。
SELECT * FROM TableName WHERE ColumnName NOT REGEXP '[0-9]';
查询的目标值包含通配符本身
使用 ESCAPE 关键字来指定一个转义字符,以表明通配符不是用于模糊搜索,而是作为普通字符来匹配。
例如:查找包含百分号%的数据,可以使用 LIKE 并指定转义字符:
SELECT * FROM TableName WHERE ColumnName LIKE '%\%%' ESCAPE '\';
在上面的例子中,\ 是指定的转义字符,而 \% 就表示实际上是在寻找包含百分号的数据。
SQL中的转义字符:
单引号('):在字符串中表示字符串的开始和结束,如果需要在字符串中使用单引号,可以使用两个连续的单引号('')来表示一个单引号。
反斜杠(\):在字符串中表示转义字符的开始,如果需要在字符串中使用反斜杠,可以使用两个连续的反斜杠(\)来表示一个反斜杠。
百分号(%):在模式匹配中表示通配符,如果需要在字符串中使用百分号,可以使用两个连续的百分号(%%)来表示一个百分号。
下划线(_):在模式匹配中表示通配符,如果需要在字符串中使用下划线,可以使用两个连续的下划线(__)来表示一个下划线。
反引号(`):在MySQL中,反引号用于表示标识符,如表名、列名等。如果需要在标识符中使用反引号,可以使用两个连续的反引号()来表示一个反引号。
斜杠(/):在正则表达式中表示转义字符的开始,如果需要在正则表达式中使用斜杠,可以使用两个连续的斜杠(//)来表示一个斜杠。
句点(.):在正则表达式中表示匹配任意字符,如果需要在正则表达式中使用句点,可以使用反斜杠(\)来转义,即(.)来表示一个句点。
问号(?):在正则表达式中表示匹配零个或一个字符,如果需要在正则表达式中使用问号,可以使用反斜杠(\)来转义,即(\?)来表示一个问号。
星号(*):在正则表达式中表示匹配零个或多个字符,如果需要在正则表达式中使用星号,可以使用反斜杠(\)来转义,即(*)来表示一个星号。
加号(+):在正则表达式中表示匹配一个或多个字符,如果需要在正则表达式中使用加号,可以使用反斜杠(\)来转义,即(+)来表示一个加号。
左花括号({):在正则表达式中表示限定符的开始,如果需要在正则表达式中使用左花括号,可以使用反斜杠(\)来转义,即({)来表示一个左花括号。
右花括号(}):在正则表达式中表示限定符的结束,如果需要在正则表达式中使用右花括号,可以使用反斜板(\)来转义,即(})来表示一个右花括号。
左方括号([):在正则表达式中表示字符集的开始,如果需要在正则表达式中使用左方括号,可以使用反斜杠(\)来转义,即([)来表示一个左方括号。
右方括号(]):在正则表达式中表示字符集的结束,如果需要在正则表达式中使用右方括号,可以使用反斜杠(\)来转义,即(])来表示一个右方括号。
左圆括号(():在正则表达式中表示分组的开始,如果需要在正则表达式中使用左圆括号,可以使用反斜杠(\)来转义,即(()来表示一个左圆括号。
右圆括号()):在正则表达式中表示分组的结束,如果需要在正则表达式中使用右圆括号,可以使用反斜杠(\)来转义,即())来表示一个右圆括号。
竖线(|):在正则表达式中表示或运算符,如果需要在正则表达式中使用竖线,可以使用反斜杠(\)来转义,即(|)来表示一个竖线。
脱字符(^):在正则表达式中表示取反运算符,如果需要在正则表达式中使用脱字符,可以使用反斜杠(\)来转义,即(\^)来表示一个脱字符。
美元符号($):在正则表达式中表示匹配字符串的结束位置,如果需要在正则表达式中使用美元符号,可以使用反斜杠(\)来转义,即(\$)来表示一个美元符号。
井号(#):在MySQL中,井号用于表示注释的开始,如果需要在SQL语句中使用井号,可以使用两个连续的井号(##)来表示一个井号。