Mysql case 会将数值转化为文本?
时间: 2023-07-15 21:13:21 浏览: 104
在 MySQL 中,CASE 表达式会根据条件返回一个值。当 CASE 表达式中的所有分支都是数字时,返回的结果也是数字。如果其中某个分支是字符串,那么 MySQL 会将所有分支的结果都转换为字符串类型,即将数值转化为文本。
例如,以下查询语句:
```
SELECT CASE
WHEN 1 > 0 THEN 100
WHEN 2 > 1 THEN '200'
END;
```
结果为:
```
+----------------------------------+
| CASE |
+----------------------------------+
| 100200 |
+----------------------------------+
```
可以看到,由于第二个分支返回的是字符串类型的 '200',因此整个 CASE 表达式的结果也被转换为字符串类型,导致两个分支的结果被拼接在了一起。
相关问题
mysql中tinyint转换文本类型
在MySQL中,`TINYINT`是一个小型整数类型,其默认值通常是8位,范围从-128到127。如果你想要将`TINYINT`数据转换成文本类型,以便于存储字符串或展示更友好的信息,你可以使用`CONVERT()`、`CAST()`函数或者是类型转换。
例如,如果你想把`TINYINT`类型的数字1转化为文本"True"或"False",可以这样做:
```sql
SELECT
CASE WHEN value = 1 THEN 'True' ELSE 'False' END AS text_value
FROM
your_table
WHERE
your_column IS NOT NULL AND your_column IN (0, 1);
```
这里`your_table`是表名,`your_column`是包含`TINYINT`值的列名。`CASE`表达式会检查`TINYINT`值是否等于1,并相应地返回文本。
另外,也可以使用`CONVERT()`函数直接转换,如下:
```sql
SELECT
CONVERT(VARCHAR(10), your_column) AS text_value
FROM
your_table;
```
这将把`TINYINT`数值转换成长度为10的字符型。
阅读全文