字段名如下
name|phone|dress|em|qq|mark
想任意输入一些值,透过查询姓名或电话号码或地址或QQ等进行模糊查询
注:只有一个输入框输入查询条件
SELECT * FROM from WHERE name ||phone||dress||qq LIKE %某值%
上面语句有一个问题就是 如果某字段是null 值,则查询不到
请教各大神,怎么写这个SQL语句会最佳?
换成多个查询条件是对的,如果一定要连接查询的话,要注意 || 只要其中一个字段为null结果为null,所以每个字段要给他一个默认值:
SELECT * FROM [表名] WHERE ifnull(name,'') || ifnull(phone,'') || ifnull(adress,'') || ifnull(qq,'') LIKE '%某值%'
nvl 是函数 不是SQL 语句
数据量大得话,应该用全文检索了, 毕竟 %% 用不到索引,效率很低。
数据量一般的话, 可以考虑 or,union。concat_ws 可能会有 误查得情况
######谢######过滤后有2中类型数据
1. 姓名和地址 不是全数字
2. QQ和手机是全数字
然后针对查询就好
######过滤后有2中类型数据
1. 姓名和地址 不是全数字
2. QQ和手机是全数字
然后针对查询就好
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。