关于LOAD DATA导入及无中间名学生SELECT查询的技术咨询
关于LOAD DATA导入无中间名时的字段值及筛选查询
嘿,我来帮你拆解这两个问题:
一、无中间名时middle字段会被赋予什么值?
这主要取决于你的students表中middle字段的定义,以及CSV文件中对应位置的内容:
- 如果CSV里对应中间名的位置是空(比如一行数据是
Smith,John,):- 若
middle字段允许NULL(定义时带NULL属性),那么该字段会被设置为NULL - 若
middle字段被定义为NOT NULL且有默认值(比如middle VARCHAR(50) NOT NULL DEFAULT ''),则会使用预设的默认值(这里是空字符串) - 若
middle字段是NOT NULL且无默认值,导入时会直接报错,因为无法为非空字段提供有效值
- 若
- 如果CSV里对应位置是空格或空白字符,导入后
middle会被设为对应的空白字符串,默认不会自动修剪这些空白内容
你的LOAD语句本身是符合语法的,只要字段顺序和CSV列的顺序对应就行:
LOAD DATA LOCAL INFILE 'Your path to snames here/snames.csv' INTO TABLE students FIELDS TERMINATED BY ',' (lname, fname, middle);
二、筛选无中间名/中间名缩写的学生的SELECT语句
要覆盖实际场景中两种常见的“无中间名”情况:middle是NULL,或者是空字符串(有些场景下可能会存空白字符串而非NULL),基础查询语句可以这么写:
SELECT lname, fname, middle FROM students WHERE middle IS NULL OR middle = '';
如果你的数据里还有可能存在仅包含空格的无效中间名,也可以加上TRIM()函数来覆盖这种情况:
SELECT lname, fname, middle FROM students WHERE middle IS NULL OR TRIM(middle) = '';
内容的提问来源于stack exchange,提问作者NAOMI.TREE
相关产品推荐
相关产品推荐

