我有一张桌子(菜)
( 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中, '*'表示所有列 那么,是否有任何字符表示所有行?
答案 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%'