mysql update varchar字段时,传入字符串“0”update后该字段未变成0而是空
时间: 2023-11-27 08:22:31 浏览: 37
这是因为在 MySQL 中,当你将一个空字符串('')或者非数字字符串(比如 'abc')插入到一个数字类型的字段中,MySQL 会自动将它转化为 0。但是,当你将字符串 '0' 插入到一个 VARCHAR 类型的字段中,MySQL 不会将它转化为 0,而是将它当做一个普通字符串来对待。因此,如果你想要将一个 VARCHAR 类型的字段更新为 0,你需要将字符串 '0' 明确地转化为数字类型,可以使用如下语句:
```
UPDATE table_name SET varchar_column = 0 WHERE some_condition;
```
这样,你就可以将 VARCHAR 类型的字段更新为数字 0 了。
相关问题
mysql varchar 里存json字符串,如何读取json里的某个字段
如果在MySQL的VARCHAR类型字段里存储了JSON字符串,可以使用MySQL提供的JSON函数来查询和操作JSON数据。
例如,如果想要读取JSON字符串里的某个字段,可以使用JSON_EXTRACT函数。该函数的语法如下:
```
JSON_EXTRACT(json_string, json_path)
```
其中,`json_string`是存储在VARCHAR字段里的JSON字符串,`json_path`是需要提取的字段路径,可以是一个简单的键名,也可以是一个嵌套的路径。例如,如果JSON字符串如下:
```
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown"
}
}
```
要提取`address`字段里的`city`值,可以使用以下SQL语句:
```
SELECT JSON_EXTRACT(json_string, '$.address.city') FROM table_name;
```
其中,`json_string`是存储在VARCHAR字段里的JSON字符串,`table_name`是存储JSON字符串的表名。
执行以上SQL语句后,会返回所有记录里`address.city`字段的值。如果要筛选特定的记录,可以添加WHERE子句。
注意,如果JSON字符串里的某个字段值是一个数组或对象,可以使用JSON函数提供的其他方法来处理。例如,可以使用JSON_ARRAY函数创建一个JSON数组,使用JSON_OBJECT函数创建一个JSON对象,使用JSON_ARRAY_APPEND函数向数组里添加元素等。
MySQL order by 排序乱 字段varchar 存数组或者字符串
如果你的字段是存储数组或字符串,那么在使用 `ORDER BY` 进行排序时,MySQL会按照字符串的字典顺序进行排序,而不是按照数组元素的大小进行排序,这可能会导致排序结果不是你所期望的。
如果你想按照数组元素的大小进行排序,你可以使用 MySQL 内置函数 `SUBSTRING_INDEX`,将字段中的数组或字符串拆分成单独的元素,然后按照这些元素的大小进行排序。
例如,如果你的字段名为 `my_field`,存储了一个以逗号分隔的字符串数组,你可以使用以下查询语句进行排序:
```
SELECT * FROM my_table ORDER BY CAST(SUBSTRING_INDEX(my_field, ',', 1) AS UNSIGNED), CAST(SUBSTRING_INDEX(my_field, ',', 2) AS UNSIGNED), ...
```
这个查询语句会将 `my_field` 字段按照第一个元素的大小进行排序,如果第一个元素相同,则按照第二个元素的大小进行排序,以此类推。注意,需要将元素转换为 `UNSIGNED` 类型,才能按照其大小进行排序。
如果你的数组或字符串中包含了不同类型的元素,如字符串和数字,那么你需要对不同类型的元素使用不同的排序方式。例如,你可以使用 `ORDER BY` 子句中的 `CASE` 语句,针对不同类型的元素使用不同的排序方式:
```
SELECT * FROM my_table ORDER BY
CASE WHEN my_field REGEXP '^[0-9]+$' THEN CAST(my_field AS UNSIGNED)
ELSE my_field END,
...
```
这个查询语句会首先按照 `my_field` 是否为数字进行判断,如果是数字,则按照数字大小进行排序,否则按照字符串的字典顺序进行排序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)