SQL模糊查询

43 篇文章 0 订阅
 
文章通 搜索 得, SQL模糊查询 ,原文地址不 ,但 发现转载 文章基本都有一个 错误 ,比如:

SELECT * FROM user WHERE name LIKE ';% %';
将会把 name 三脚猫 唐三藏 等等有 的全找出来;

其中 LIKE ';% %' 多了个分号 “;” 这还 能搜索得出来 ?估 编辑 编译 故。

======
重新 编辑 文如下:

行数据 库查询时 ,有完整 查询 和模糊 查询 之分。

一般模糊 句如下:
SELECT 字段 FROM WHERE 某字段 Like 条件


其中 于条件, SQL 提供了四 匹配模式:

1
% :表示任意 0 个或多个字符。可匹配任意 型和 度的字符,有些情况下若是中文, 使用两个百分号( %% )表示。

比如 SELECT * FROM [user] WHERE u_name LIKE '% %'

将会把 u_name 猫三 三脚猫 唐三藏 等等有 记录 全找出来。

另外,如果需要找出 u_name 中既有 又有 记录 使用 and 条件
SELECT * FROM [user] WHERE u_name LIKE '%
%' AND u_name LIKE '% %'

若使用 SELECT * FROM [user] WHERE u_name LIKE '% % %'
然能搜索出 三脚猫 ,但不能搜索出符合条件的 猫三

2
_ 表示任意 个字符。匹配 个任意字符,它常用来限制表达式的字符 句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_ _'
只找出 唐三藏 这样 u_name 三个字且中 一个字是 的;

再比如 SELECT * FROM [user] WHERE u_name LIKE ' __';
只找出 三脚猫 这样 name 三个字且第一个字是 的;


3
[ ] :表示括号内所列字符中的一个( 似正 表达式)。 指定一个字符、字符串或范 ,要求所匹配 中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[ 李王 ] '
将找出 李三 王三 (而不是 李王三 );

[ ] 内有一系列字符( 01234 abcde 的) 可略写 “0-4” “a-e”
SELECT * FROM [user] WHERE u_name LIKE '
[1-9]'
将找出 1” 2” …… 9”

4
[^ ] :表示不在括号所列之内的 个字符。 其取 [] 相同,但它要求所匹配 指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^ 李王 ] '
将找出不姓 等;

SELECT * FROM [user] WHERE u_name LIKE '
[^1-4]';
将排除 1” 4” 5” 6” ……

5 查询 内容包含通配符

由于通配符的 故, 致我 们查询 特殊字符 “%” “_” “[” 句无法正常 实现 ,而把特殊字符用 “[ ]” 括起便可正常 查询 据此我 写出以下函数:

function sqlencode(str)
str=replace(str,"[","[[]") '
此句一定要在最前
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

查询 前将待 字符串先 经该 函数 理即可
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值