0

がクエリから true として返された場合、実際に行にあるものを表示するのではなくis_closed、クエリに を設定closing_timeするように指示するにはどうすればよいですか?closed23:00:00

私は試した

AND IF(is_closed = 1, 1, 0) closing_time = 'closed'

しかし、それは

SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

ありがとう!

edit closing_timeは日付フィールドです。

4

2 に答える 2

2

フィールド リストに条件ステートメントを追加します。

SELECT 
  < some column(s) here >, 
  CASE WHEN is_closed = 1 
       THEN 'closed' 
       ELSE closing_time END AS CLOSING_TIME_OR_CLOSED
...

テスト済みの例は、http ://sqlfiddle.com/#!2/108c1/2 にあります。

IF ステートメントとは対照的に、CASE ステートメントは ANSI SQL であり、ANSI 標準を実装する任意の RDBMS でクエリを実行できることを意味します。

于 2013-01-30T19:24:51.577 に答える
1

がデータ型TIMEの場合closing_time、SELECTリストで次のような式を使用できます。

SELECT IF(is_closed=1,'closed',TIME_FORMAT(closing_time,'%H:%i')) AS closing_time

この式は文字列(VARCHARデータ型)を返すことに注意してください。

于 2013-01-30T19:40:28.760 に答える