SQL通配符与查询方法

数据库   2024-12-21 09:39   76   0  

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语句中使用井号,可以使用两个连续的井号(##)来表示一个井号。


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。