我有一个表名为CustomerName
的列,其中包含名字,中间名和姓。有些名称可能没有中间名。在同一个表中,我有3列名为firstName
,middleName
和LastName
,其中填充了None值。我需要拆分CustomerName
列并将它们放在各自的列中。我如何在mysql
中做到这一点?我尝试了以下但得到错误:
UPDATE xcust SET
LastName = SUBSTRING_INDEX(trim(CustomerName),' ',-1)
case
when LENGTH(trim(CustomerName)) - LENGTH(REPLACE(trim(CustomerName), ' ',
'')) = 1 then null
else MiddleName = SUBSTRING_INDEX(SUBSTRING_INDEX(trim(CustomerName),'
',2),' ',-1)
end
FirstName = SUBSTRING_INDEX(trim(CustomerName),' ',1)
where CustomerName = 'JAMES G STAHL'"""
我收到的 错误 是:
ProgrammingError:(1064,“你的SQL语法有错误;请检查 与您的MariaDB服务器版本对应的手册 在'case \ n当LENGTH(trim(CustomerName))附近使用正确的语法 - LENGTH(REPLACE(trim(CustomerName),'','在第3行“)
我使用pymysql来运行查询。任何帮助,将不胜感激。
答案 0 :(得分:2)
未经测试,但乍一看,您在设置的不同值之间缺少逗号,需要在case语句之外使用MiddleName。
UPDATE xcust SET
LastName = SUBSTRING_INDEX(trim(CustomerName),' ',-1),
MiddleName =
case when LENGTH(trim(CustomerName)) - LENGTH(REPLACE(trim(CustomerName), ' ', '')) = 1 then
null
else
SUBSTRING_INDEX(SUBSTRING_INDEX(trim(CustomerName),' ',2),' ',-1)
end,
FirstName = SUBSTRING_INDEX(trim(CustomerName),' ',1)
where CustomerName = 'JAMES G STAHL'