如何搜索包含sql中特定字符的行?

时间:2016-06-05 08:57:20

标签: sql oracle

我有一张桌子(菜)

( dish )
id  menu      mi1   mi2   mi3     mi4
1   soup      water egg   salt   (null)
2   sandwich  bread egg   cheese (null)
3   hamberger ham   bread cheese  egg

所以我想要包含'bread'字符的行

显示此结果:

id  menu      mi1   mi2   mi3     mi4
2   sandwich  bread egg   cheese (null)
3   hamberger ham   bread cheese  egg

如果我想要这个结果,怎么写sql?

我不想要这个答案sql

SELECT * FROM dish
WHERE mi1 like '%bread%'
OR    mi2 like '%bread%'
OR    mi3 like '%bread%'
OR    mi4 like '%bread%'

在sql中, '*'表示所有列 那么,是否有任何字符表示所有行?

2 个答案:

答案 0 :(得分:1)

嗯,不是真的,但你可以通过将这些列合并在一起来欺骗它:

SELECT * FROM dish d
WHERE d.mi1 || '-' || d.mi2 || '-' || d.mi3 || '-' || d.mi4 LIKE '%bread%'

这样,它将在一个条件内搜索整行 - >

'soup-water-egg-salt' LIKE '%bread%'
'sandwich-bread-egg-cheese' LIKE '%bread%'
......

答案 1 :(得分:0)

您可以在应用CONCAT()

后尝试此操作
SELECT * 
FROM dish
WHERE  CONCAT(mi1, ' ', mi2, ' ', mi3, ' ', mi4) LIKE '%bread%'