Mysql 在一列中选择部分值并将其复制到另一列-sql查询
我有下面的sql查询,需要对其进行修复,以修剪选择的开头和结尾的任何空白。我还需要它从firstname列中删除lastname部分:Mysql 在一列中选择部分值并将其复制到另一列-sql查询,mysql,sql,string,sql-update,Mysql,Sql,String,Sql Update,我有下面的sql查询,需要对其进行修复,以修剪选择的开头和结尾的任何空白。我还需要它从firstname列中删除lastname部分: UPDATE customer_address_entity SET lastname = RIGHT(firstname,LENGTH(firstname)-LOCATE(' ',firstname)) WHERE lastname = '' 例如,如果firstname列中包含Jo de blog,而lastname列为空,我希望firstnam
UPDATE customer_address_entity
SET lastname = RIGHT(firstname,LENGTH(firstname)-LOCATE(' ',firstname))
WHERE lastname = ''
例如,如果firstname列中包含Jo de blog,而lastname列为空,我希望firstname列包含Jo,lastname列包含de blog,这有点棘手,因为如果字符串以空格开头,表达式将不会产生预期的结果 我将使用:
substring(trim(firstname), locate(' ', trim(firstname)) + 1)
这基本上是从删除字符串中的前导空格和尾随空格开始的,然后选择字符串中第一个空格之后的所有内容
在更新声明中:
UPDATE `customer_address_entity`
SET `lastname` = substring(trim(firstname), locate(' ', trim(firstname)) + 1)
WHERE `lastname` = ''
如果名字和姓氏之间可能有多个空格,则也可以修剪生成的字符串:
trim(substring(trim(firstname), locate(' ', trim(firstname)) + 1))
我会同意的 当名字有两个姓氏时,就需要最后两个姓氏 当名字有1个姓氏时,也只需要最后一个姓氏 随着名字中单词数量的增加。您需要更复杂的算法来找到正确的索引
dfdeld我会考虑使用修剪和子字符串索引函数。我还强烈建议在我们将表达式合并到UPDATE语句中之前,使用SELECT语句测试表达式,验证结果。是的,某些字符串将包含多个空格,请澄清我们将在何处合并您提到的代码的最后一部分。谢谢,还需要从firstname列中删除lastname部分。Cheers就是这样做的,所以它修剪了lastname部分,以防firstname部分后面有多个空格。是的,你可以修剪它,就像我在teh中所做的那样回答它只是文本
CREATE TABLE customer_address_entity (
`id`INT,
`firstname` varchar(25),
`lastname` varchar(25)
);
INSERT INTO customer_address_entity
(`id`,`firstname`, `lastname`)
VALUES
(1,'Jo de blog ',''),(2,'Jo blog ',''),(3,'test2','test2');
SELECT * FROM customer_address_entity
id | firstname | lastname
-: | :---------- | :-------
1 | Jo de blog |
2 | Jo blog |
3 | test2 | test2
UPDATE `customer_address_entity`
SET `lastname` = TRIM(SUBSTRING_INDEX(TRIM(`firstname`), " "
, IF(LENGTH(TRIM(`firstname`)) - LENGTH(REPLACE(TRIM(`firstname`), ' ', '')) > 1,-2,-1)))
,
firstname = TRIM(SUBSTRING_INDEX(TRIM(`firstname`), " ", 1))
WHERE `lastname` = '';
SELECT * FROM customer_address_entity
id | firstname | lastname
-: | :-------- | :-------
1 | Jo | de blog
2 | Jo | blog
3 | test2 | test2