【问题标题】:MySQL IF Statement, IF SET, ELSE do nothing? [duplicate]MySQL IF 语句、IF SET、ELSE 什么都不做? [复制]
【发布时间】:2014-06-20 08:01:59
【问题描述】:

我总是在下面的语句中遇到语法错误。

这是我目前所拥有的,但似乎不起作用。

IF(birthday_year='0', birthday_year='0001', birthday_year)

我想要它,如果 birthday_year 值设置为 0,我希望它是 0001,否则(如果它不是 0,并且是不同的值)保持它的值;如果不为 0,则不要更改该值。

【问题讨论】:

  • 它是选择语句的一部分吗?
  • 是的,抱歉没有提到。它是 SELECT 语句的一部分。谢谢你。 :)
  • 请不要为提问而道歉。也不要添加谢谢。这些东西在堆栈溢出时被视为noise

标签: mysql sql if-statement


【解决方案1】:

如果您想更新表格,请执行以下操作:

UPDATE table1 SET birthday_year = '0001' 
WHERE birthday_year = '1'

您实际上只在存储过程中使用IF 语句。

见:google 更具体地说:http://code.tutsplus.com/articles/an-introduction-to-stored-procedures-in-mysql-5--net-17843

虽然您可以在select 中使用IF 语句,但它确实没有多大意义。您宁愿使用wherecase 子句。

【讨论】:

    【解决方案2】:

    语法就是IF(condition, value_if_true, value_if_false),这么简单;

    SELECT IF(birthday_year='0', '0001', birthday_year) birthday_year
    FROM ... 
    

    【讨论】:

      【解决方案3】:

      根据您的表架构,您可能需要使用整数而不是字符串:

      SELECT IF(birthday_year=0, 0001, birthday_year) FROM someTable; 
      

      【讨论】:

        【解决方案4】:

        如果这是选择语句的一部分,您可以使用:

           SELECT 
                CASE 
                       WHEN BIRTHDAY_YEAR='0'
                            THEN '0001'
                       ELSE BIRTHDAY_YEAR
                END AS COLUMN_NAME 
           FROM TABLE_NAME 
        

        【讨论】:

          猜你喜欢
          • 2014-10-08
          • 1970-01-01
          • 2018-09-19
          • 1970-01-01
          • 1970-01-01
          • 2014-12-20
          • 1970-01-01
          • 2017-10-13
          • 2019-04-09
          相关资源
          最近更新 更多