02 SQL的进阶应用

02 SQL的进阶应用

标签:SQL、数据库

1.通配字符 %

  %代表搜索模式中给 定位置的0个、1个或多个字符。
①头字符匹配

SELECT prod_id, prod_name 
FROM Products
WHERE prod_name LIKE 'Fish%';

  此例子使用了搜索模式’Fish%’。在执行这 条子句时,将检索任意以Fish起头的
词。%告诉DBMS接受Fish之后的任意字符, 不管它有多少字符。根据DBMS的不同及其配置,搜索可以是 区分大小写的。

②中间字符匹配

SELECT prod_id, prod_name 
FROM Products 
WHERE prod_name LIKE '%bean bag%'

  搜索模式’%bean bag%'表示匹配任何位置上 包含文本bean bag的值,不论它之前或之后 出现什么字符。

③头尾字符匹配

SELECT prod_name 
FROM Products 
WHERE prod_name LIKE 'F%y';

  找出的是所有以F开头,y结尾的字符串。

说明:请注意后面所跟的空格 说明:请注意后面所跟的空格 包括Access在内的许多DBMS都用空格来 填补字段的内容。例如,如果某列有50个 字符,而存储的文本为Fish bean bag toy(17个字符),则为填满该列需要在 文本后附加33个空格。这样做一般对数据 及其使用没有影响,但是可能对上述SQL 语句有负面影响。子句WHERE prod_name LIKE 'F%y’只匹配以F开头、以y结尾 的prod_name。如果值后面跟空格,则不 是以y结尾,所以Fish bean bag toy就 不会检索出来。简单的解决办法是给搜索 模式再增加一个%号:'F%y%'还匹配y之后的字符(或空格)。更好的解决办法是用 函数去掉空格。

2.通配字符 _

  另一个有用的通配符是下划线(_)。下划线 的用途与%一样,但它只匹配单个字符,而不 是多个字符。

SELECT prod_id, prod_name 
FROM Products WHERE 
prod_name LIKE '_ inch teddy bear';

  一个下划线用来匹配单个的字符

3.通配字符

  只用于匹配0-9的单个数字。

4.通配字符[ ]

①[ ]的基本使用
[ad]:用来表示可以匹配的字符有a和d
[a-d]:用来表示字符范围,在这里是从a到d。

SELECT cust_contact 
FROM Customers 
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;

  这个语句查询匹配以 J 或 M 起头的 任意联系人名。这里的意味着在方括号中的J、M都是匹配对象。
②^的使用

SELECT cust_contact 
FROM Customers
WHERE cust_contact LIKE '[^JM]%' 
ORDER BY cust_contact;

  这句的所有不一样的地方只是多了一个,通配符可以用前缀字符(脱字号)来否 定。这样,这就输出的就是所有 不是以 J、M开头的名字的人名。

③NOT的使用
NOT不属于通配字符里面

SELECT cust_contact 
FROM Customers 
WHERE NOT cust_contact LIKE '[JM]%' 
ORDER BY cust_contact;

  注意区别,这里WHERE的后面多了一个NOT,达到了与②的例子相同的效果。

5.正则表达式查询 regexp_like

例如:

select * from fzq where regexp_like(FieldName,'1[0-9]{4}60');

你可能感兴趣的:(SQL数据库,SQL,数据库)