我有兩個表,第一個表被呼叫IM_ITEM并具有以下列
| 編號 | 描述 | 品牌 |
|---|---|---|
| 10000 | 奧林·斯威夫特·布萊克 | " " |
| 10001 | 金峰甜茶 | " " |
| 10002 | 瓦拉紅混合 | " " |
| 10003 | 佳得樂檸檬酸橙 | 佳得樂 |
第二個表是一個名為的查找表IM_ATTR_COD,具有以下列
| ATTR_5 | 描述 |
|---|---|
| 奧林斯威夫特 | 奧林斯威夫特 |
| 金峰 | 金峰 |
| 瓦拉 | 瓦拉 |
| 佳得樂 | 佳得樂 |
| 舒適 | 南方舒適 |
我想通過表“IM_ATTR_COD”中列“ATTR_5”的資料更新表“IM_ITEM”中的空欄位“BRAND”。當 ATTR_5 部分匹配表 IM_ITEM 中“DESCR”中的資料時
我使用了以下代碼,但它不能正常作業
UPDATE IM_ITEM
SET BRAND = ATTR_5
FROM IM_ITEM M
RIGHT JOIN IM_ATTR_COD R ON M.BRAND = R.ATTR_5
WHERE CHARINDEX (R.ATTR_5, M.DESCR) > 0
預期結果
| 編號 | 描述 | 品牌 |
|---|---|---|
| 10000 | 奧林·斯威夫特·布萊克 | 奧林斯威夫特 |
| 10001 | 金峰甜茶 | 金峰 |
| 10002 | 瓦拉紅混合 | 瓦拉 |
| 10003 | 佳得樂檸檬酸橙 | 佳得樂 |
任何幫助,請
uj5u.com熱心網友回復:
您可以使用 LIKE 子句并在 JOIN 中使用它,如下所示。
DECLARE @im_item table (ITEM_NO int, DESCR varchar(500), BRAND varchar(50))
DECLARE @im_attr_cod table (attr_5 varchar(100), DESCR varchar(500))
INSERT INTO @im_item
values
(10000,'Orin Swift Black', null)
,(10001,'Gold Peak Sweet tea',null);
INSERT INTO @im_attr_cod
values
('Orin Swift', 'Orin Swift')
,('Gold Peak', 'Gold Peak');
UPDATE i
SET BRAND = a.DESCR
FROM @im_item AS i
INNER JOIN @im_attr_cod as a
on i.DESCR like a.attr_5 '%';
SELECT * FROM @im_item
| 編號 | 描述 | 品牌 |
|---|---|---|
| 10000 | 奧林·斯威夫特·布萊克 | 奧林斯威夫特 |
| 10001 | 金峰甜茶 | 金峰 |
uj5u.com熱心網友回復:
嘗試
UPDATE IM_ITEM
SET BRAND = ATTR_5
FROM IM_ITEM M
INNER JOIN IM_ATTR_COD R ON M.DESCR LIKE '%' R.ATTR_5 '%'
WHERE (M.BRAND = '' OR M.BRAND IS NULL)
如果您希望它適用于所有行,只需洗掉WHERE (M.BRAND = '' OR M.BRAND IS NULL)
uj5u.com熱心網友回復:
沒有 concat 然后:
UPDATE m
SET m.BRAND = r.ATTR_5
FROM IM_ITEM m
JOIN IM_ATTR_COD r
ON m.DESCR LIKE r.ATTR_5 '%'
WHERE ISNULL(m.BRAND,'') = ''
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477203.html
