sql语言如何查询一条记录中含有两个关键字?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语言如何查询一条记录中含有两个关键字?相关的知识,希望对你有一定的参考价值。
sql语言如何查询一条记录中含有两个关键字?例如列表中有Station1...Station10个字段名,如何设置查询,检索出其中含有“上海”“北京”两个关键字的记录?
感谢各位,我表述详细点吧,这就是查找两个地点是否是在一条线路上的语句,当这条线路经过的站点包含着两个地点时,就把它检索出来,请问改用什么语句比较好。
这样当Station更多时会不会影响执行效率啊?
追答嗯,肯定的~ 没索引,又是||,又是%……
追问哦,谢谢
追答考虑效率的话,多加一列“线路”然后来个索引?
最好城市用简写或者编号比如 bj sh 或者 a b c 可以缩短该列的平均长度。
麻烦能否写下语句呢?
追答加一列是说改表结构~~ 举个例子哈,你原来的表结构是这样的~
列名 id , .... , station1, station2, .... station10
值 1 .... , 北京, 上海, .... 广州
修改后表结构是这样的
列名 id , .... , station1, station2, .... station10, Line
值 1 .... , 北京, 上海, .... 广州, bj-sh-...-gz
总之,新列越短约好,并在Line上建索引。
谢谢回答,但是字段名较少时这个方法可以,当字段名较多时用起来会比较繁琐,有没有更简洁的办法?
追答好像只能用拼接来做,如果你数据多的话,可以写个函数来帮你自动拼接
参考技术D 你有主键吧,给你个思路select a.* from
[Temp].[dbo].[test] as a
inner join (
SELECT id, ([stat1] +[stat2] +[stat3] +[stat4]) as com FROM [Temp].[dbo].[test]
) as b on a.id = b.id
where b.com like '%a%' and b.com like '%b%'追问
你好,我表述详细点吧,这就是查找两个地点是否是在一条线路上的语句,当这条线路经过的站点包含着两个地点时,就把它检索出来,请问改用什么语句比较好。
追答你看看这个函数 CONCAT
另外,你这个表定型了么
如果没有的话,可以重新设计下
做个站点的表,站点ID 加 站名
线路表,线路ID 加 站点ID
这样就舒服了
以上是关于sql语言如何查询一条记录中含有两个关键字?的主要内容,如果未能解决你的问题,请参考以下文章