求大神指教!数据库模糊查询!如何用多配少 数据库select 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主你想得到什么样的效果?n1的字段中包含c1的全部字段?还是c1是列名,n1是字符串? 先假设有一种方法可以实现你的需求。那么可能会出现如下情况:假定c1字段长度为1,n1=‘ab’,sql语句变成查询 select * from table where c1 like ‘%ab%’;通过假设的方法,c1字段只可能查询出结果是a或b的值。如果n1=abcdefg....,那么c1字段将查询出所有n1所包含的的字母。如此下去,可以想象一下:select带条件查询出的结果很有可能就是整个表,并不能起到筛选的效果,这与设置条件是相违背的。所以这种查询本身就是一种没有意义的。where条件查询的根本目的就是缩小查询结果范围,如果起不到这种效果的条件查询将无任何意义。因此,你说的这种情况本身就存在一点问题,n1的长度只能是小于等于c1字段的长度。个人理解,仅供参考! c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出? 如果n1的长度只能是大于c1字段的长度,是可以查到的select * from table where n1 like '%'||c1||'%'但是如果不知道n1的长度,就不知道怎么查了! c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1) c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1)n1记得加单引号 c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1)n1记得加单引号只要包含就输出!但是,像这种情况也要输出例如:n1 = “北京中关村股份有限公司” 但是也要输出“北京中关村” c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1)n1记得加单引号只要包含就输出!但是,像这种情况也要输出例如:n1 = “北京中关村股份有限公司” 但是也要输出“北京中关村”你这个结果其实不是sql语句直接查询的结果,可能你想要的是输入“北京中关村股份有限公司”,把所有相关的信息都显示出来,类似关键字搜索并且带有一点自动联想的意思。这块就不是sql能做的了,需要你在进行数据库查询之后找到关键字,利用这个关键字去查询数据库。就像:输入”中华人民共和国“,会查出”中国“一样。 c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1)n1记得加单引号只要包含就输出!但是,像这种情况也要输出例如:n1 = “北京中关村股份有限公司” 但是也要输出“北京中关村”你这个需求上面的也能实现啊。除非你还有其他要求,如 n1 = “北京中关村股份有限公司” ,要输出 “北京公司”。那就没办法用sql来实现 c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1)n1记得加单引号只要包含就输出!但是,像这种情况也要输出例如:n1 = “北京中关村股份有限公司” 但是也要输出“北京中关村”你这个结果其实不是sql语句直接查询的结果,可能你想要的是输入“北京中关村股份有限公司”,把所有相关的信息都显示出来,类似关键字搜索并且带有一点自动联想的意思。这块就不是sql能做的了,需要你在进行数据库查询之后找到关键字,利用这个关键字去查询数据库。就像:输入”中华人民共和国“,会查出”中国“一样。没有看懂!怎么去找关键字? 用字符串函数instrselect * from table where instr(n1,c1)>0;楼主是想要这样不? c1是一个列名 n1为一个字符串那就是说你的需求是:c1列中的数据,包含n1字符串中的一部分就输出?还是 c1中数据的长度小于n1字符串 就输出?SELECT*from testwhere LOCATE(c1,n1)n1记得加单引号只要包含就输出!但是,像这种情况也要输出例如:n1 = “北京中关村股份有限公司” 但是也要输出“北京中关村”你这个需求上面的也能实现啊。除非你还有其他要求,如 n1 = “北京中关村股份有限公司” ,要输出 “北京公司”。那就没办法用sql来实现这个还真没这样查询过。请问sql查询语句是怎样写? JSTP Ajax问题 如何读取ORACLE表里BLOB字段的内容? 用java打war包的程序 我的servlet返回的xml为什么在javascript里不能正确解析? 如何把String转换成Date 求解决java.net.SocketTimeoutException 框架上的一个applet按钮单击后,框架下的页面怎么跳转????? 非常奇怪?我用JSP做了一个小网站,用TOMCAT 做SERVER, 学JAVA可以从PHP入手? Jackson中有没有方法可以将两个Json和并在一起的方法。 Extjs+SSH实现消息提示的功能
n1的字段中包含c1的全部字段?
还是c1是列名,n1是字符串?
那么可能会出现如下情况:
假定c1字段长度为1,n1=‘ab’,sql语句变成查询 select * from table where c1 like ‘%ab%’;
通过假设的方法,c1字段只可能查询出结果是a或b的值。
如果n1=abcdefg....,那么c1字段将查询出所有n1所包含的的字母。
如此下去,可以想象一下:select带条件查询出的结果很有可能就是整个表,并不能起到筛选的效果,这与设置条件是相违背的。
所以这种查询本身就是一种没有意义的。
where条件查询的根本目的就是缩小查询结果范围,如果起不到这种效果的条件查询将无任何意义。
因此,你说的这种情况本身就存在一点问题,n1的长度只能是小于等于c1字段的长度。个人理解,仅供参考!
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
如果n1的长度只能是大于c1字段的长度,是可以查到的select * from table where n1 like '%'||c1||'%'但是如果不知道n1的长度,就不知道怎么查了!
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
c1是一个列名 n1为一个字符串
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
n1记得加单引号
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
n1记得加单引号
只要包含就输出!
但是,像这种情况也要输出
例如:n1 = “北京中关村股份有限公司”
但是也要输出“北京中关村”
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
n1记得加单引号
只要包含就输出!
但是,像这种情况也要输出
例如:n1 = “北京中关村股份有限公司”
但是也要输出“北京中关村”你这个结果其实不是sql语句直接查询的结果,可能你想要的是输入“北京中关村股份有限公司”,把所有相关的信息都显示出来,类似关键字搜索并且带有一点自动联想的意思。
这块就不是sql能做的了,需要你在进行数据库查询之后找到关键字,利用这个关键字去查询数据库。
就像:输入”中华人民共和国“,会查出”中国“一样。
c1是一个列名 n1为一个字符串
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
n1记得加单引号
只要包含就输出!
但是,像这种情况也要输出
例如:n1 = “北京中关村股份有限公司”
但是也要输出“北京中关村”
你这个需求上面的也能实现啊。
除非你还有其他要求,如 n1 = “北京中关村股份有限公司” ,要输出 “北京公司”。那就没办法用sql来实现
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
n1记得加单引号
只要包含就输出!
但是,像这种情况也要输出
例如:n1 = “北京中关村股份有限公司”
但是也要输出“北京中关村”你这个结果其实不是sql语句直接查询的结果,可能你想要的是输入“北京中关村股份有限公司”,把所有相关的信息都显示出来,类似关键字搜索并且带有一点自动联想的意思。
这块就不是sql能做的了,需要你在进行数据库查询之后找到关键字,利用这个关键字去查询数据库。
就像:输入”中华人民共和国“,会查出”中国“一样。
没有看懂!怎么去找关键字?
select * from table where instr(n1,c1)>0;
楼主是想要这样不?
c1是一个列名 n1为一个字符串
那就是说
你的需求是:
c1列中的数据,包含n1字符串中的一部分就输出?
还是 c1中数据的长度小于n1字符串 就输出?
SELECT
*
from
test
where
LOCATE(c1,n1)
n1记得加单引号
只要包含就输出!
但是,像这种情况也要输出
例如:n1 = “北京中关村股份有限公司”
但是也要输出“北京中关村”
你这个需求上面的也能实现啊。
除非你还有其他要求,如 n1 = “北京中关村股份有限公司” ,要输出 “北京公司”。那就没办法用sql来实现这个还真没这样查询过。请问sql查询语句是怎样写?