SQL问题,如何SELECT多个LIKE条件中符合的那一列。

HapCn 2009-05-25 04:38:59
请问:
我要做一个预搜索的功能,类似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列,是符合的那列)。
...全文
1160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2009-05-25
  • 打赏
  • 举报
回复

SELECT pname
FROM products
WHERE pname like (@key + '%') order by [name],[clickcount]
union
SELECT typename
FROM products
WHERE typename like (@key + '%') order by [name],[clickcount]
union
SELECT stylename
FROM products
WHERE stylename like (@key + '%') order by [name],[clickcount]
HapCn 2009-05-25
  • 打赏
  • 举报
回复
wxg22526451正解,谢谢各位。
wxg22526451 2009-05-25
  • 打赏
  • 举报
回复

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
阿非 2009-05-25
  • 打赏
  • 举报
回复

union all

支持1楼和2楼
HapCn 2009-05-25
  • 打赏
  • 举报
回复
回复好快啊,感动ing。
wxg22526451的语句我不懂用,它只返回了一条数据,而我要返回的是一个列表;
jingshuaizh和jiangshun的能找出我想要的数据,但是我还想对返回的数据进行排序 先:
1.排除重复的name
2.按name排序:例如,如果输入的是“米奇”,结果排列为:“米奇”、“米奇0”、“米奇1”
3.如果name相同,按另外一个int字段排列:clickcount

不好意思,思路没理清,想了30分钟才回复
jiangshun 2009-05-25
  • 打赏
  • 举报
回复
大力速度快啊,慢了点,呵呵
wxg22526451 2009-05-25
  • 打赏
  • 举报
回复
create proc test
@key varchar(50)
as
if exists(SELECT 1 FROM products WHERE pname like (@key + '%') )
select 'pname'
if exists(SELECT 1 FROM products WHERE typename like (@key + '%') )
select 'typename'
if exists(SELECT 1 FROM products WHERE stylename like (@key + '%') )
select 'stylename'
jiangshun 2009-05-25
  • 打赏
  • 举报
回复
把SQL语句改一下,另外后台在查询字段前也加个%

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 + '%')
蓝海D鱼 2009-05-25
  • 打赏
  • 举报
回复
如果 3列 都有 符合的 你要怎么处理
 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 + '%')


62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧