日期:2014-05-18  浏览次数:20914 次

SQL server 查询
我有个表是顾客咨询表 里面有几个字段 姓名,咨询内容,咨询意向,备注...
我界面上有一个输入框,不管工作人员输入什么只要在这四个字段中有的就能查出来,有可能输入的东西在每个字段中都只占有一个字
请高手指教

------解决方案--------------------
select * from 顾客咨询表 where 姓名 like '%输入%' or 咨询内容 like '%输入%' or 咨询意向 like '%输入%' or 备注 like '%输入%'
------解决方案--------------------
SQL code
select * from 顾客咨询表 where 姓名+咨询内容+咨询意向+备注 like '%输入%'

------解决方案--------------------
楼上的可以
------解决方案--------------------
2楼更简洁!顶!
------解决方案--------------------
建议写个存储过程!
楼上的效率可能不太高!
------解决方案--------------------
一楼的写法有可能会使用索引,二楼的是通过计算来查询,用不到索引,所以,一楼的效率高
------解决方案--------------------
顶了看
------解决方案--------------------
同一樓!
------解决方案--------------------
字串的like 左邊加%,類似like '%c' ,都用不到索引
------解决方案--------------------
若是 姓名+咨询内容+咨询意向+备注=aa+bb+cc+dd 而 输入=aacc
也要使它能搜出来sql语句又当如何写
------解决方案--------------------
二楼的不妥,若干姓名+咨询内容+咨询意向+备注=张三+维护+cc+dd 而 输入=三维,那不也会有结果这与需求不符

------解决方案--------------------
1楼正解
2楼会出错
比如
select * from 顾客咨询表 where 姓名(...输)+(入...)咨询内容+咨询意向+备注 like '%输入%'
就会出错
------解决方案--------------------
1楼的正确。2楼的错误。

实际上最好用自己定义函数来写(不用存储过程)

select * from table where f(输入)=...
------解决方案--------------------
C# code
 
string s = this.textbox.text.trim();
for (int i = 0;i < s.length; i++)
{
    string sql = " select * from 顾客咨询表 where 姓名 like '%" + s[i].ToString() + "%' or 咨询内容 like '%" + s[i].ToString() + "%' or 咨询意向 like '%" + s[i].ToString() + "%' or 备注 like '%" + s[i].ToString() + "%'";
}

------解决方案--------------------
只能用函数了,有点麻烦
------解决方案--------------------
我感觉用like来个模糊查询就可以了吧