
SQL中like和in能组合在一起用,具体使用如下:
(1)保留字like在sql里与+-/一样是运算符之一,可用 like 运算符来找出符合指定样式的字段值。它通常要结合通配符表达式一起使用。
(2)保留字in在sql里的作用多一些,其作用之一也与+-/一样是运算符,用 “in 运算符”可判断表达式的数值是否等于指定列表中几个数值中的一个;其作用之二为设置sql子查询,用“in子查询”的结果可以对主查询实施筛选,筛选效果与in运算符相同;另外不同种类的数据库in还可能有一些其他特殊用途。
(3)sql里like in是可以组合使用的,前提是必须符合语法规范,不得将它们直接合在一起使用,正如不能将一个数同时乘以除以另外一个数一样。
扩展资料:
mssql 数据库like in组合使用举例:
(1)查出学生表里所有一班和二班姓张的同学资料
select from 学生 where 姓名 like '张%' and 班级 in ('一班','二班')
(2)查出学生表里所有姓张和姓王的同学资料
select from 学生 where 姓名 in (select 姓名 from 学生 where 姓名 like '张%' or 姓名 like '王%'
(3)mysql中like in 不能这样组合使用实例,查出学生表里所有姓张和姓王的同学资料
select from 学生 where 姓名 like in ('张%','王%')或者select from 学生 where 姓名 in (like '张%',like '王%')。
测试表
CREATE TABLE test_like (
like_value VARCHAR(20)
);
INSERT INTO test_like
SELECT '1234567890' UNION ALL
SELECT '12345' UNION ALL
SELECT 'abca' UNION ALL
SELECT 'adcb' UNION ALL
SELECT 'abcc' UNION ALL
SELECT 'abcd' UNION ALL
SELECT 'abcde' UNION ALL
SELECT 'xyz 10% OFF' UNION ALL
SELECT 'xyz 20% OFF' UNION ALL
SELECT 'xyz_123_abc'
_ 表示仅仅匹配1个字符
SELECT
FROM
test_like
WHERE
like_value LIKE '1234_';
like_value
--------------------
12345
(1 行受影响)
% 表示仅仅匹配0个或多个字符
SELECT
FROM
test_like
WHERE
like_value LIKE '12345%';
like_value
--------------------
1234567890
12345
(2 行受影响)
使用模式匹配
SELECT
FROM
test_like
WHERE
like_value LIKE 'abc[ad]';
like_value
--------------------
abca
abcd
(2 行受影响)
SELECT
FROM
test_like
WHERE
like_value LIKE '[1a]%[5e]';
like_value
--------------------
12345
abcde
(2 行受影响)
使用 ESCAPE 定义转义符
SELECT
FROM
test_like
WHERE
like_value LIKE '%!%%' ESCAPE '!';
like_value
--------------------
xyz 10% OFF
xyz 20% OFF
(2 行受影响)
SELECT
FROM
test_like
WHERE
like_value LIKE '%!_%' ESCAPE '!';
like_value
--------------------
xyz_123_abc
(1 行受影响)
aaa=" "
if 文本框!="" then
aaa=" where 字段 like %内容%"
end if
sql="select from 表名"&aaa
设置一个字符串 判断文本框不为空的时候就给字符串赋值查询条件,再把这个字符串加在查询语句后面。 这样当文本框等于空的时候 sql="select from 表名"&" " 不等于空的sql="select from 表名"&" where 字段 like %内容%" 注意where前面最好价格空格。 我用的是ASP语言,如果你用别的语言要改if一句的格式和连接符。
SQL LIKE里查询有下划线'_'或是'%'等值的记录,直接写成like 'XXX_XX',则会把'_'当成是like的通配符。
例如搜索 select from user_all_tables where table_name like '%%%' 会将表中所有数据检索出来
Android SQL中暂时发现''%''为通配符
SQL里提供了 escape子句来处理这种情况,escape可以指定like中使用的转义符是什么,而在转义符后的字符将被当成原始字符,这和C里的'\'很像,但是escape要求自定义一个转义符,而不是指定了'\’字符。如:
select from user_all_tables where table_name like 'YW__%' escape '_'
含义是查出当前用户表下所有以'YW_'开头的表,其中第一个'_'是转义符,第二个是被转义的字符,等效可以写成:
select from user_all_tables where table_name like 'YW\_%' escape '\'
这里 如果直接搜索通配符例如设置 escape '_' 直接搜索 _ SQL语句为: select from user_all_tables where table_name like '%_%' 这时会将 含%内容全部搜索出来 ,这里现行解决方案为两条SQL语句
Stringcontains()判断搜索内容是否含有'%'
若含有则使用 select from user_all_tables where table_name like '%%%' escape '_'
不含则使用 select from user_all_tables where table_name like '%%%'
原文链接
1、多字段like模糊查询优化:
最常见的写法:
where a like '%xx%' or b like '%xx%' or c like '%xx%';
这种写法查询效率低,经过调查,下面的方法可以替代,并且效率高:
2、如果like的关键字相同:
where instr(nvl(a, '')||nvl(b,'')||nvl(c,''), 'xx') > 0
把要模糊查询的字段先拼接起来,拼接时需要把null转成‘’,否则只要有一个字段值是空,整个拼接的字符串都成空了, 然后用instr 函数去过滤;
3、如果like的关键字不同:
where instr(a, 'xx') > 0 or instr(b, 'yy') > 0 or instr(c, 'zz') > 0
经过测试,这两种方法都比like效率要高;
以上就是关于sql里like in能组合用吗的相关推荐全部的内容,包括:sql里like in能组合用吗的相关推荐、SQL中like的用法、SQL中的like语句问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)