MySql SELECT 与 if 语句和 LIKE 运算符

Posted

技术标签:

【中文标题】MySql SELECT 与 if 语句和 LIKE 运算符【英文标题】:MySql SELECT with if statement and LIKE operator 【发布时间】:2015-10-22 23:11:23 【问题描述】:

我在一个广告网站上工作。

我有一张桌子,每天有一列。我需要在表格中检查默认保存哪些广告以仅更新这些广告。

我试过这个,但它不起作用。

SELECT Monday if (Monday LIKE '%default%'),
Tuesday if (Tuesday LIKE '%default%')
FROM `Ad_Relationshp`

mysql 给我这个错误:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'if (Monday LIKE '%default%') FROM Ad_Relationshp LIMIT 0' 附近使用正确的语法。我已尝试将语法更改为我能做的所有事情想想看,但我仍然得到同样的错误。

【问题讨论】:

预期结果是什么? 只显示其中包含“默认”的列 如果您能提供表格结构和预期结果,那就太好了 您能分享一下您的表格结构、一些示例数据以及您想要达到的结果吗? 【参考方案1】:

您正在使用 if 条件分支,这只能在过程和触发器中使用,请使用 if 函数。

SELECT if (`Monday` LIKE '%default%',`Monday`,''),
if (`Tuesday` LIKE '%default%',`Tuesday`,'')
FROM `Ad_Relationshp`


SELECT `Monday`,`Tuesday`
FROM `Ad_Relationshp`
WHERE `Monday` LIKE '%default%'
OR `Tuesday` LIKE '%default%'

【讨论】:

嗨,米海。谢谢。我快到了。该字段包含到保存在服务器目录中的图像的路径。您的 SELECT 有效并给了我一个结果,但它没有向我显示路径,而是显示“星期一” @Anoniem 我编辑它假设路径是列,将路径替换为存储路径的列名 如果它不包含“默认”,它会显示没有路径的列名。这很好。如果列内容中没有“默认”,有没有办法从结果中排除该列?

以上是关于MySql SELECT 与 if 语句和 LIKE 运算符的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Select 中的 If 语句

IF 语句中带有子查询的 MySQL SELECT 语句的语法

IF 语句中的 MySQL SELECT WHERE

在 MySQL SELECT 查询中使用 IF 语句

MySQl 错误 #1064 存储过程 IF ELSE 带有多个 SELECT 语句

在 mySQL SELECT 语句中使用嵌套的 IF