日期:2014-05-20  浏览次数:20449 次

SQL问题,如何SELECT多个LIKE条件中符合的那一列。
请问:
我要做一个预搜索的功能,类似Google那样,输入框中的字符变化的时候,下面就列出条件符合的结果。条件有3个,只要符合其一就可。我用下面这个存储过程可以得到一个DataSet:
  SELECT pname,typename,stylename
FROM products
WHERE pname like (@key + '%')
OR typename like (@key + '%')
OR stylename like (@key + '%')
ORDER BY pname,typename,stylename
但是问题是:我要把这个产品符合条件的那一个字段的值显示到列表中,可我并不知道是哪一个字段。
有没有办法直接在存储过程中只返回符合条件的那个字段的值(即只 SELECT 3列中的1列,是符合的那列)。

------解决方案--------------------
如果 3列 都有 符合的 你要怎么处理
SQL code
 SELECT pname
FROM products 
WHERE pname like (@key + '%') 
union all
   SELECT typename
FROM products 
WHERE typename like (@key + '%') 
union all
   SELECT stylename 
FROM products 
WHERE stylename like (@key + '%')

------解决方案--------------------
把SQL语句改一下,另外后台在查询字段前也加个%
SQL code

SELECT pname FROM products WHERE pname like ('%'+@key + '%') union all 
SELECT typename FROM products where typename like ('%'+@key + '%') union all 
SELECT stylename FROM products where stylename like ('%'+@key + '%')

------解决方案--------------------
SQL code

select * from(
SELECT pname as name,clickcount 
FROM products 
WHERE pname like (@key + '%') 
union 
SELECT typename,clickcount 
FROM products 
WHERE typename like (@key + '%') 
union 
SELECT stylename,clickcount  
FROM products 
WHERE stylename like (@key + '%')
) t order by name,clickcount