SQL模糊查询的语法

SQL模糊查询的语法为: “Select column FROM table Where column LIKE 'pattern'”。

SQL提供了四种匹配模式:

1. % 表示任意0个或多个字符。如下语句:Select * FROM user Where name LIKE '%三%'; 将会把name为“张三”,“三脚猫”,“唐三藏”等等有“三”的全找出来。%三:表示左匹配。三%:表示右匹配。

%三%:表示模糊查询。

2. _ 表示任意单个字符。语句: Select * FROM user Where name LIKE '_三_';只找出“唐三藏”。这样name为三个字且中间一个字是“三”的; Select * FROM user Where name LIKE '三__'; 只找出“三脚猫”这样name为三个字且第一个字是“三”的;

3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:Select * FROM user Where name LIKE '[张李王]三'; 将找出“张三”、“李三”、“王三”(而不是“张李王三”); 如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e“。Select * FROM user Where name LIKE '老[1-9]'; 将找出“老1”、“老2”、……、“老9”; 如要找“-”字符请将其放在首位:'张三[-1-9]';

4. [^ ] 表示不在括号所列之内的单个字符。语句:Select * FROM user Where name LIKE '[^张李王]三';将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;Select * FROM user Where name LIKE '老[^1-4]';      将排除“老1”到“老4”寻找“老5”、“老6”、……、“老9”。

最后是重点!由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”、“';”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:           function sqlencode(str)      str=replace(str,"';","';';")      str=replace(str,"[","[[]") ';此句一定要在最先      str=replace(str,"_","[_]")      str=replace(str,"%","[%]")      sqlencode=str      end function      在查询前将待查字符串先经该函数处理即可,并且在网页上连接数据库用到这类的查询语句时侯要注意:如Select * FROM user Where name LIKE '老[^1-4]';上面 《'》老[^1-4]《'》是要有单引号的,别忘了.

 

 

### SQL 模糊查询使用 LIKE 语法示例 在 SQL 中,`LIKE` 是一种用于模糊查询的关键字,它允许通过模式匹配来筛选数据。通常与通配符 `%` 和 `_` 配合使用,可以实现对字符串的部分匹配[^1]。 #### 基本语法 ```sql SELECT column1, column2, ... FROM table_name WHERE column_name LIKE pattern; ``` - `pattern` 是一个包含通配符的字符串,用于定义匹配规则。 - `%` 表示任意长度(包括零长度)的字符序列。 - `_` 表示单个字符。 #### 示例代码 以下是一些常见的 `LIKE` 查询示例: 1. **查询字段中包含特定子字符串的记录** ```sql SELECT * FROM employees WHERE name LIKE '%John%'; ``` 上述查询将返回所有 `name` 字段中包含 "John" 的记录[^1]。 2. **查询以特定字符串开头的记录** ```sql SELECT * FROM products WHERE product_name LIKE 'Apple%'; ``` 此查询将返回所有 `product_name` 字段以 "Apple" 开头的记录[^3]。 3. **查询以特定字符串结尾的记录** ```sql SELECT * FROM customers WHERE email LIKE '%gmail.com'; ``` 这将返回所有 `email` 字段以 "gmail.com" 结尾的记录[^3]。 4. **查询字段中某个位置为特定字符的记录** ```sql SELECT * FROM users WHERE username LIKE '_a%'; ``` 此查询将返回所有 `username` 字段中第二个字符为 "a" 的记录[^1]。 5. **避免索引失效的情况** 如果需要优化性能,尽量避免在 `LIKE` 的前缀中使用 `%`,因为这会导致索引失效。例如: ```sql SELECT * FROM articles WHERE title LIKE '%keyword%'; ``` 可以考虑使用函数如 `LOCATE` 或 `INSTR` 替代[^2]。 #### 注意事项 - 在某些数据库系统中,`*` 和 `%` 可以互换使用,但推荐始终使用 `%` 以保持一致性[^3]。 - 对于 `CHAR` 和 `VARCHAR` 类型的数据,可能因存储方式差异导致 `LIKE` 匹配失败,需注意数据类型的处理[^4]。 ```sql -- 示例:查找姓氏为 "Smith" 的所有作者著作 DECLARE @LastName CHAR(50); SET @LastName = 'Smith'; SELECT Title FROM Books WHERE AuthorLastName LIKE @LastName + '%'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值