-
MySQL JSON_ARRAYAGG 没有匹配行时会返回 SQL NULL。本文区分无输入行、NULL 扩展行和 JSON 空数组,给出 COALESCE 以及先聚合后关联的稳定处理方案。
-
MySQL JSON_TABLE 展开嵌套数组时,父字段可能重复且业务键可能同名。本文用两层 FOR ORDINALITY、NESTED PATH 和业务键保留父子定位,并说明缺少子数组时的 NULL 补行。
-
MySQL JSON 字段不能直接建立普通索引时,可以用生成列提取需要查询的标量值,再在生成列上建立二级索引。本文用字符串和数值两个例子说明 JSON_UNQUOTE、CAST、VIRTUAL、STORED、表达式匹配和常见边界。
-
MySQL INFORMATION_SCHEMA.CHECK_CONSTRAINTS 可以查看 CHECK 约束所属数据库、约束名和 CHECK_CLAUSE;若要定位具体表并查看是否启用,应再关联 TABLE_CONSTRAINTS。本文给出按库、按名称和按表排查的查询写法。
-
MySQL LOAD XML 默认按 XML 字段名匹配目标列;当两边命名不一致时,可以先把 XML 字段接入同名用户变量,再用 SET 映射到目标列。本文说明完整写法、ROWS IDENTIFIED BY 和常见导入边界。
-
用 MySQL 递归 CTE 生成最小日期到最大日期的连续序列,再通过 LEFT JOIN 保留没有业务记录的日期,并用 COALESCE 将空聚合补成 0。
-
MySQL ST_Transform 会同时转换几何坐标和 SRID;ST_SRID 只修改参考系标识而不改坐标。本文用一个最小 POINT 示例说明调用方式、结果读取和常见错误边界。
-
用 MySQL ROW_NUMBER 按分组和时间排序取每组最新一条记录,并补上唯一键处理并列时间;同时说明为什么要在外层过滤 rn = 1,以及何时改用 RANK。
-
MySQL 的 CHECK 约束会在写入时按当前会话的 sql_mode 计算,迁移脚本、应用连接和批量导入若模式不一致,可能得到不同结果。本文从现象、表达式边界和连接初始化三处说明如何统一执行环境。
-
MySQL 的 CHAR 值保存时会按定长补齐空格,但查询返回时默认去掉。本文用 CHAR(6) 对照实验说明 PAD_CHAR_TO_FULL_LENGTH 如何改变返回长度、HEX 结果和包裹后的显示,并提醒它不会改变排序规则对尾随空格的比较语义。
-
MySQL C API 里的 mysql_store_result 会把结果集整体取到客户端,适合需要随机访问、统计行数或快速释放连接的场景;mysql_use_result 按行读取、内存更省,但会持续占用当前连接,必须快速读完全部行。本文用对比表和原创 C 示例说明两种方式的边界。
-
MySQL C API 读取预处理结果时遇到 MYSQL_DATA_TRUNCATED,不要直接当成 SQL 失败。本文说明如何检查 MYSQL_BIND.error、length、buffer_length 和 is_null,并用 mysql_stmt_fetch_column() 取回长字符串或 BLOB。
-
MySQL C API 的 mysql_stmt_data_seek 只能用于已经由 mysql_stmt_store_result 缓冲的预处理语句结果集。本文说明零基行号、边界判断、seek 后 fetch,以及完整缓冲带来的内存取舍。
-
MySQL C API 的工作线程需要先准备线程级变量,并在退出前释放对应资源。本文区分 mysql_library_init、mysql_thread_init、mysql_init 与 mysql_thread_end 的职责,用 pthread 示例说明初始化失败、连接关闭、线程退出和同一连接并发访问的边界。
-
mysql_real_escape_string_quote 的 quote 参数不是装饰项,而是 SQL 字符串所在的引号上下文。本文说明单引号、双引号和反引号的选择、连接字符集、缓冲区容量与 ANSI_QUOTES 边界,并给出可直接改造旧式拼接代码的 C 示例。