выберите *,if(sva=1,"male","female") как ssva из taname, где sva<>""
12.2.
Значение CASE WHEN [значение сравнения] THEN результат [WHEN [значение сравнения] THEN результат ...] [ELSE результат] END CASE WHEN [условие] THEN результат [WHEN [условие] THEN результат ...] [ELSE результат] КОНЕЦ
В возвращаемом результате первого сценария значение = значение сравнения. Возвращаемый результат второго сценария является истинным результатом первого сценария. Если соответствующего значения результата нет, возвращаемым результатом является результат после ELSE. Если части ELSE нет, возвращаемое значение равно NULL.
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
->
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END
; 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
Тип возвращаемого значения по умолчанию для выражения CASE — это любой совместимый тип коллекции возвращаемого значения, но Конкретная ситуация зависит от контекста. Если используется в строковом контексте, возвращает результирующую строку. Если используется в числовом контексте, результат возвращается в виде десятичного, вещественного или целочисленного значения.
ЕСЛИ(выражение1,выражение2,выражение3)
Если выражение1 имеет значение TRUE (выражение1 <> 0 и выражение1 <> NULL), возвращаемым значением IF() является выражение2, в противном случае возвращаемым значением является выражение3; Возвращаемое значение IF() — это либо числовое значение, либо строковое значение, в зависимости от контекста.
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'да ','нет'
-> 'да'
mysql> SELECT IF(STRCMP('test'); ,'test1'),'no','yes');
-> 'no'Если
только одно из expr2 или expr3 явно имеет значение NULL, тип результата функции IF() является типом результата выражения, отличного от NULL. .
expr1 оценивается как целочисленное значение, а это означает, что если вы проверяете значение с плавающей запятой или строковое значение, вам следует использовать операции сравнения для проверки.
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
В первом показанном примере возвращаемое значение IF(0.1) равно 0, потому что 0,1 преобразуется в целое значение, вызывая проверку IF(0). Возможно, это не та ситуация, которая вам нужна. Во втором примере сравнение проверяет исходное значение с плавающей запятой, чтобы убедиться, что оно не равно нулю. Используйте целые числа для результатов сравнения.
Тип возвращаемого значения по умолчанию для IF() (это важно, когда он хранится во временной таблице) рассчитывается следующим образом:
выражение
возвращаемое значение
Возвращаемое значение выражения2 или выражения3 является строкой.
нить
Возвращаемое значение выражения2 или выражения3 является значением с плавающей запятой.
с плавающей запятой
Возвращаемое значение выражения2 или выражения3 является целым числом.
целое число
Если выражения2 и выражения3 являются строками и любая из строк чувствительна к регистру, возвращаемый результат чувствителен к регистру.
http://blog.knowsky.com/
ЕСЛИНУЛ(выражение1,выражение2)
Если выражение1 не NULL, возвращаемое значение IFNULL() — выражение1, в противном случае — выражение2; Возвращаемое значение IFNULL() — это число или строка, в зависимости от контекста, в котором оно используется.
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10
-
>
10mysql> SELECT IFNULL(1/0,10);
mysql> SELECT IFNULL(1/0,); 'yes');
-> 'yes'
Значение результата по умолчанию IFNULL(expr1,expr2) является более «общим» из двух выражений в порядке STRING, REAL или INTEGER. Предположим, что это таблица на основе выражений, или MySQL должен сохранить возвращаемое значение IFNULL() во временной таблице в памяти:
CREATE
TABLE tmp SELECT IFNULL(1,'test') AS test;
тип — CHAR(4).
НУЛИСЛИ(выражение1,выражение2)
Если выполняется выражение1 = выражение2, возвращаемое значение равно NULL, в противном случае возвращаемое значение — выражение1. Это то же самое, что CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2-> 1
)
Обратите внимание, что если параметры не равны, значение, полученное MySQL дважды, равно expr1;