【发布时间】:2019-05-08 02:40:02
【问题描述】:
我有两张桌子:
T1:
CODE FULL_NAME
和T2:
CODE FIRST_NAME LAST_NAME
所有列的类型均为NVARCHAR。
T1 中的一些CODE 单元格是空的,我需要从T2 获取它们。我需要在T1 中使用FULL_NAME 信息并在T2 中的LAST_NAME 和FIRST_NAME 列中搜索。这样的UPDATE怎么写?
到目前为止我写的是:
UPDATE IMPORT_DATA.RDBS_DATA_STORAGE
SET child_iin = pd.iin
FROM IMPORT_DATA.RDBS_DATA_STORAGE
INNER JOIN nedb.PERSONAL_DATA pd ON child_iin LIKE 'N' + '%' + pd.LAST_NAME + '%' + ' ' + 'N' + '%' +
pd.FIRST_NAME + '%'
WHERE LEN(child_iin)
但不成功。
编辑:
我不能只使用WHERE t1.FULL_NAME=t2.FIRST_NAME + ' ' + t2.LAST_NAME,因为我可以有t1.FULL_NAME = 'Jorsh Arthur Weasley' 和t1.FIRST_NAME='William'、t2.LAST_NAME='Weasley' 这样的场景。
还有。
我需要使用N,因为正如我所说,这些列的类型是NVARCHAR,并且我在那里有非ASCII字母,例如:
SELECT * FROM T1 WHERE CODE = 'Неважно' 不返回任何内容,要解决此问题,我必须添加 N:SELECT * FROM T1 WHERE CODE = N'Неважно' 返回一行。
【问题讨论】:
-
“但不成功。” 这是什么意思?你有没有收到错误,它没有按预期工作,你能详细说明一下吗?
-
@Larnu 请看一下编辑
标签: sql sql-server select sql-update