我会尽可能地解释这一点,如果这不合理,我会提前道歉。我在一个表(table.a)中有两列(first\u name和last\u name),其中有很多数据不正确。我正在尝试用另一个表(table.b)中的正确数据更新这些列。问题是表.b的列在一列中同时包含名字和姓氏数据。例如,table.a列和值是first\u name=richard,last\u name=johnsondev,而table.b列和值是full\u name=johnsondev,richard。有没有一种方法可以使用table.b数据的一部分更新table.a和两列?唯一一致的是table.b姓氏以“dev”结尾,比如“johnsondev,richard”
编辑:
我正在使用microsoft sql server。希望下面的信息是有用的!
当前表数据
表b
FULL_NAME
Johnsondev, Richard
Smithdev, Kevin
表a
FIRST_NAME / LAST_NAME
Richard / Jacksondev
Kevin / Standev
使用查询的预期输出
TABLE.B stays the same
TABLE.A
FIRST_NAME / LAST_NAME
Richard / Johnsondev
Kevin / Smithdev
2条答案
按热度按时间uwopmtnx1#
如果你使用
JOIN
方法,这将是sql server的语法:yacmzcpb2#
在mysql中,您可以执行以下操作。根据您的设置,这可能需要修改。但是,对于
LAST_NAME
我们正在选择所有符合指定分隔符的内容','
. 为了FIRST_NAME
我们把所有东西都选在我们过去姓的右边。注意,这将更新所有名称。你可以用WHERE
之后`或者,您可能需要将它们连接在一起。
根据您的请求进行编辑,经过一些测试后,这些可能是sql server中的替代方案。
子字符串:
SUBSTRING ( expression ,start , length )
查林德克斯:CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
```SELECT SUBSTRING('Johnsondev, Richard', CHARINDEX(',','Johnsondev, Richard') +1, Len('Johnsondev, Richard')) -- Richard
SELECT LEFT('Johnsondev, Richard',CHARINDEX(',','Johnsondev, Richard')-1) -- Johnsondev
SELECT SUBSTRING(FULL_NAME, CHARINDEX(',',FULL_NAME) +1, Len(FULL_NAME))
FROM TABLE_B
SELECT LEFT(FULL_NAME, CHARINDEX(',',FULL_NAME)-1)
FROM TABLE_B