01 小木的故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值。那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别。...面试官:那你能大概说一下Mysql中 NULL值和空值的区别吗? 小木:(思考…)NULL和空值都用过,你要我说它两有啥区别,这个我还真没仔细想过,反正实际开发中会用! 听了小木的这个回答。...02 NULL和空值 NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。...1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。...6:实际到底是使用NULL值还是空值(’’),根据实际业务来进行区分。个人建议在实际开发中如果没有特殊的业务场景,可以直接使用空值。 以上就是我的对此问题的整理和思考,希望可以在面试中帮助到你。
PHP是一种宽松类型的编程语言,在函数中对传入的参数值的“类型”以及”值是否为空或者NULL“进行检查是不可缺少的步骤。...但是从语义上来说,一个变量”是否已显示初始化“和”是否为NULL“是不同的概念,在某些场景下使用isset是不合适的,比如检查一个函数的返回值是否为NULL。...此时可以使用"=="和”===“来判断它们是否为NULL。 对于"=="和”===“,它们直接的区别还是很大。对于"==",它认同空字符串,0,false都为NULL。...其实这个函数没有必要和他们进行比较,因为它代表的意思很简单,它的意思就是判断一个变量所存储的内容是否为零或者为空,而这里的空不仅仅是NULL。那么有哪些内容代表零或者空的概念呢?""...如果$e是未定义或值为NULLL,$e=NULL,它肯定是空,即empty($e)=true; 如果$e是int类型,$e=0,就相对于数字,0代表为零,即empty($e)=true; 如果$e是string
JSON_EXTRACT JSON_EXTRACT(json_field, path[, path] …) 提取son字段某个路径的值 COLUMN->PATH json_model -> ‡$.name...’ json_extract的简洁写法,MySQL 5.7.9开始支持 COLUMN->>PATH json_model ->> ‡$.name’ json_unquote(column -> path...JSON_UNQUOTE select JSON_UNQUOTE(JSON_EXTRACT(json_model, '$.name')) name1, JSON_EXTRACT(json_model..., '$.name') name2 from t_test COLUMN->PATH 等同于JSON_EXTRACT COLUMN->>PATH 等同于JSON_UNQUOTE JSON_SET...') 优化JSON查询 查询某个path的值是否匹配的执行计划 EXPLAIN select * from t_test where JSON_EXTRACT(json_model, '$.optimizeContents
空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占用存储空间的 空字符串('')的长度是0,是不占用空间的 通俗的讲...空值(NULL)就像是一个装满空气的杯子,含有东西。 二者虽然看起来都是空的、透明的,但是有着本质的区别。...| | | 4 | NULL | 1 | +------+-------+-------+ 4 rows in set (0.00 sec) 首先比较一下,空字符('')和空值...而且比较字符 ‘=’’>’ ‘’不能用于查询null, 如果需要查询空值(null),需使用is null 和is not null。...在设置字段的时候,可以给字段设置为 not null ,因为 not null 这个概念和默认值是不冲突的。
->> 评估路径后返回JSON列的值,并且去掉扩在结果外面的引号;等效于JSON_UNQUOTE(JSON_EXTRACT())。...换句话说,给定 JSON 列和路径(字符串文本),以下三个表达式返回相同的值: JSON_UNQUOTE( JSON_EXTRACT(column, path) ) JSON_UNQUOTE(column...如果所选对象为空,则结果数组为空。如果顶级值具有嵌套的子对象,则返回值不包括这些子对象的键。...JSON_STORAGE_SIZE() 和 JSON_STORAGE_FREE() 分别显示给定 JSON 值使用的存储空间大小和部分更新后 JSON 列中剩余的空间大小。 1....对象成员的键和值由冒号和空格(': ')分隔。 空对象或数组打印在一行上。左大括号和右大括号之间没有空格。 字符串标量和键名中的特殊字符采用与 JSON_QUOTE() 函数相同的规则进行转义。
换句话说,给定一个 JSON列值 column和一个路径表达式 path,以下三个表达式将返回相同的值: * JSON_UNQUOTE( JSON_EXTRACT(column, path) ) * JSON_UNQUOTE...(column -> path) * column->>path 可以在任何允许使用JSON_UNQUOTE(JSON_EXTRACT())的地方使用->> 。...这包括(但不限于)SELECT lists、WHERE和HAVING子句以及ORDER BY和GROUP BY子句。...如果选定对象为空,则结果数组为空。如果顶级值具有嵌套的子对象,则返回值不包括来自这些子对象的键。...默认值是 \,如果 escape_char参数丢失或 NULL。否则, escape_char必须为空或一个字符的常量。
json_contains_path 判断某个路径下是否包json值 json_extract 提取json值 column->path json_extract的简洁写法,MySQL 5.7.9...开始支持 column->>path json_unquote(column -> path)的简洁写法 json_keys 提取json中的键值为json数组 json_search 按给定字符串关键字搜索...json_remove 删除json数据 json_replace 替换值(只替换已经存在的旧值) json_set 设置值(替换旧值,并插入不存在的新值) json_unquote 去除json...- JSON_UNQUOTE(val) -- 去掉val的引号。...-- 空的json array、json object或标量的深度为1。
2、对于空数组和空对象的疑惑 疑惑来源:用空数组和空对象进行if语句判断为true,但是空数组和true进行==运算时,返回的是false 用代码表示: if([]){ console.log(...'空数组转化为布尔值为true');//空数组转化为布尔值为true } if({}){ console.log('空对象转化为布尔值为true');//空对象转化为布尔值为true } if(...[]==true){ console.log('空数组等于true'); }else{ console.log('空数组等于false');//空数组等于false } 为什么空数组转化为布尔值是...true,而下面和true做对比时又不等于true呢?...事实上,所有的object转型到Boolean,都是true,[ ]和{ }都是对象。
Json 类型简介 MySQL 5.7 之后提供了Json类型,是MySQL 结合结构化存储和非结构化存储设计出来的一个类型。 在某些场景下,Json 类型简直是福音。...JSON_UNQUOTE,->和->> -- 带引号 SELECT loginInfo->"$.name" from UserLogin; -- 不带引号 SELECT loginInfo->>"$.name..." from UserLogin; SELECT JSON_UNQUOTE(JSON_EXTRACT(data,'$.name')) AS name FROM user; 输出: 李磊 列名中包含点符号...可以用双引号将其引起来: SELECT JSON_UNQUOTE(JSON_EXTRACT(data,'$."no."'))...JSON_ARRAY 计算一个值列表,并使用JSON_ARRAY返回包含这些值的JSON数组。
譬如,{"db": ["mysql", "oracle"], "id": 123, "info": {"age": 20}}空值:null。...JSON_UNQUOTE( JSON_EXTRACT(column, path) )JSON_UNQUOTE(column -> path)column->>pathmysql> select c2->...注意,在创建虚拟列时需指定 JSON_UNQUOTE,将 c1 -> "$.name" 的返回值转换为字符串。...PARTIAL_JSONMySQL 8.0.27,binlog_row_value_options=PARTIAL_JSON + binlog_row_image=MINIMAL分别执行 10 次,去掉最大值和最小值后求平均值...对于空数组,空对象,标量值,其深度为 1。
在值为数组的时候,数组的起始位置值为0,同时,MySQL 在5.5.9的版本增加了->,提供了等价于 JSON_EXTRACT另外一种写: SELECT * FROM json_test WHERE user_info...JSON_CONTAINS 判断 key 是否包含指定的值,返回值为0或1或者是 null,对应的情况为不包含、包含、和指定的key 不存在集中情况: ?...5、JSON_CONTAINS_PATH 判断 key 在字段中是否存在 JSON_CONTAINS_PATH 判断 key 在字段中是否存在,返回值为0和1,格式为 JSON_CONTAINS_PATH...7、JSON_DEPTH 层级查询 JSON_DEPTH 这个主要是用来查询 Json 字段的层级,空的为1,所以正常情况下 Json 字段类型不为空,这个值的查询出的结果应该大于等于2: ?...9、JSON_UNQUOTE 去掉前后特殊字符 JSON_UNQUOTE 主要是用来去掉前后的特殊字符,格式化值,目前支持一下几种字符: ? ?
(json_extract(`$json`,_utf8mb4'$."...判断是否有某个路径 json_extract(json_doc,path[,path]) 提取json值 column->path json_extract 简洁写法5.7.9开始支持 column->...>path json_unquote(column -> path) 简洁写法5.7.13开始支持相当于 JSON_UNQUOTE(JSON_EXTRACT()) json_keys(json_doc[...按给定字符串关键字搜索json,返回匹配的路径 搜索数组下的多个属性时可使用通配符“*”,如获取数组下对象的某属性$.item[*].name -- 判断是否包含某个json值 -- 方式1 select...替换值(只替换已经存在的旧值) json_set(json_doc,path,val[,path,val]) 设置值(替换旧值,并插入不存在的新值) json_unquote(val) 去除json字符串的引号
MySQL自5.7之后开始支持json类型,相应的解析函数主要是json_extract(与操作符“->”等效)。...不过与其它数据库的类似函数(如oradle的json_value)相比,当json的值是字符类型时,json_extract的结果略有不同。...在MySql中,是这样的: 而在Oracle中,是这样的: 可见,差别在于MySql的json_extract的返回值会带上两个双引号。 而当json的值是数值型时,没有差别。...为保持各种情况下的一致,在MySql中要解析json,还需再加上json_unquote函数以去掉双引号: json_unquote(json_extract())的等效操作符是“->>”。
《Oracle唯一索引和NULL空值之间的关系》提到了当存在唯一索引的时候,不能插入两条(1, 'a', null),但是有朋友说,MySQL允许,实测一下, root@mysqldb: [test]
json_array 创建json数组 json_object 创建json对象 json_quote 将json转成json字符串类型 查询json json_contains 判断是否包含某个json值...json_contains_path 判断某个路径下是否包json值 json_extract 提取json值 column->path json_extract的简洁写法,MySQL 5.7.9...开始支持 json_keys 提取json中的键值为json数组 json_search 按给定字符串关键字搜索json,返回匹配的路径 修改json json_append 废弃 MySQL...插入数组元素 json_insert 插入值(插入新值,但不替换已经存在的旧值) json_merge 合并json数组或对象 json_remove 删除json数据 json_replace...替换值(只替换已经存在的旧值) json_set 设置值(替换旧值,并插入不存在的新值) json_unquote 去除json字符串的引号,将值转成string类型 返回json属性 json_depth
JavaScript有5种简单数据类型(基本数据类型)和1种复杂书数据类型; 基本数据类型:Undefined,nul,Boolean,Number,String ; 复杂数据类型:Object; 以下比较一下两种表示空值的数据类型...1.null null表示一个特殊值,常用来描述“空值”。 对null执行typeof操作,结果返回字符串"object" ,null可以认为是一个特殊的对象值,含义是非对象。...=null) { //对car对象执行某些操作 } 1234 2.undefined undefined 也被用来表示值的空缺,表示未定义,undefined 值表示更深层次的"空值".所有不存在的值...true : false);//true 一般而言,不需要显式的把一个变量的值设置为 undefined ,该值的引入主要是为了区分 空对象指针 和 未经初始化的变量....的联系和区别 undefined值 是派生自 null值的,两者 在 == 下是相等的,但在 === (严格相等)下是不相等的。
所以,今天就用python来做一个简答的excle数据处理:处理空值和异常值。pandas在python中,读写excle的库有很多,通常我都是使用pandas来读写excle并处理其中的数据。...print(df.isnull())print(df.isnull().sum())如图,可以识别具体空值的位置,也可以对每列的空值进行统计:处理空值1....删除空值使用 dropna() 方法删除包含空值的行或列。...# 删除包含空值的行df_cleaned = df.dropna()# 删除包含空值的列df_cleaned = df.dropna(axis=1)# 只删除那些某些列中有空值的行df_cleaned...,通常我们会给空值填充一些默认值。
接下来,我们将使用不同的 JSON 函数来查询和修改这个数据. 3.1 JSON_EXTRACT() 提取 JSON 数据中的特定部分 -- 提取 name 字段的值 SELECT JSON_EXTRACT...请注意,在实际的数据列上使用这些函数时,你通常会对已存储的 JSON 值或要插入的值进行操作。 3.9 JSON_CONTAINS() 检查 JSON 文档是否包含指定的值。...(关于虚拟列我将在之后的文章详解) 创建索引:通过结合使用 JSON_EXTRACT() 函数和虚拟列,你可以轻松地为 JSON 数据中的特定字段创建索引。...ALTER TABLE json_example ADD first_interest VARCHAR(255) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT...(data, '$.interests[0]'))) VIRTUAL; 在这里,我们使用了 JSON_EXTRACT() 来获取 interests 数组的第一个元素,并用 JSON_UNQUOTE()
上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料。欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。...更好地检查表达式的操作数中的 null/undefined 在TypeScript 2.2中,空检查得到了进一步的改进。TypeScript 现在将带有可空操作数的表达式标记为编译时错误。...如果-,*,**,/,%,>,>>>, &, | 或 ^运算符的任何一个操作数是可空的。 如果 ,=或 in 运算符的任何一个操作数是可空的。...如果 instanceof 运算符的右操作数是可空的。 如果一元运算符+,-,~,++或者--的操作数是可空的。 来看看如果咱们不小心,可空表达式操作数就会坑下咱们的情况。...只要不再将max与undefined 的值进行比较,就可以了 混合类 TypeScript 的一个目的是支持不同框架和库中使用的通用 JS 模式。
这主要是因为索引是按照列值的原始顺序组织和存储的。当对列应用函数时(如数学运算、字符串操作或日期函数等),函数会改变原始数据的值或格式,使得数据库无法直接定位到这些经过函数转换后的值。...使用函数索引时,必须仔细考虑和测试,以确保性能提升符合预期。 此外,在创建函数索引时,需要确保表达式是确定的,即对于给定的输入值始终产生相同的输出值。非确定性表达式不适合用于函数索引。...例如,如果您有一个存储 JSON 数据的列,并且希望根据 JSON 文档中的某个键进行查询,可以创建如下索引: CREATE INDEX idx_json_key ON orders ((JSON_UNQUOTE...(JSON_EXTRACT(order_info, '$.status')))); 这样,您可以高效地查询具有特定状态的订单: SELECT * FROM orders WHERE JSON_UNQUOTE...(JSON_EXTRACT(order_info, '$.status')) = 'shipped'; 大小写不敏感的搜索 如果您需要执行大小写不敏感的字符串搜索,可以创建一个基于 LOWER() 或