我有这张表Components
:
ItemNo ItemDescription Type
1 Apple Fruit 20Kg null
2 Carrot Veg 1Kg null
3 Fig DryFruit 100g null
要求是,对于每个ItemDescription
,我确定其是Fruit
还是DryFruit
,我将值fruit
插入到列Type
中。如果其类型为Veg
,则我将值Vegetable
放入列Type
。
结果表如下所示:
ItemNo ItemDescription Type
1 Apple Fruit 20Kg Fruit
2 Carrot Veg 1Kg Vegetable
3 Fig DryFruit 100g Fruit
我如何实现这一目标?
使用C#代码:
var itemDescription = GetAllItemDescription() //Executes 'select ItemDescription from Components;' SQL query
itemDescription.ForEach(item=>{
if(item.Contains("Fruit") || item.Contains("DryFruit"))
{
EnterFruitInTypeColumn() //contains sql query which does the corresponding stuff.
}
........
}
问题是:
如何仅使用SQL语句执行相同的操作?
(我也知道有T-SQL string processing stuffs,但无法满足上述要求)
答案 0 :(得分:3)
与其他答案一样,这应该可以帮助你:
UPDATE Components
SET [Type] = CASE WHEN CHARINDEX('DryFruit', ItemDescription) > 0 THEN 'Fruit'
WHEN CHARINDEX('Veg', ItemDescription) > 0 THEN 'Vegetable'
WHEN CHARINDEX('Fruit', ItemDescription) > 0 THEN 'Fruit'
ELSE null
END
答案 1 :(得分:1)
以下查询可以。
UPDATE Components
SET [TYPE] = 'FRUIT'
WHERE ItemDescription LIKE '%Fruit%'
您必须重写所有类型的查询。
答案 2 :(得分:1)
请尝试:
update Components
set [Type]=(case when charindex('Fruit', ItemDescription,0)>0 then 'Fruit'
else 'Vegetable' end)