将一列的一部分复制到同一表中的另一列

时间:2013-10-17 17:40:40

标签: sql ms-access ms-access-2010

我需要将一列的一部分复制到另一列。分隔符是“ - ”。我不想从第一列中删除该部分。

示例:

ItemDesc            Part#
Glowear_black-1234

所以它需要看起来像这样:

ItemDesc            Part#
Glowear_black-1234  1234

我能找到的唯一SQL查询会从ItemDesc列中删除信息并将其粘贴到Part#中。我仍然需要第一列中的“1234”。此外,并非所有ItemDesc都有“ - ”(这很好)。

2 个答案:

答案 0 :(得分:0)

对于ItemDesc缺少连字符作为分隔符的情况,没有明确说明该怎么做,但这是我的建议。使用substring函数来获取连字符右侧的所有内容,其中右边的所有内容都由连字符的索引加一,以及字符串的长度绑定:

update user.table
set Part# = substring(ItemDesc, (CHARINDEX('-', ItemDesc)+1), LEN(ItemDesc) )

从评论中作出陈述:

UPDATE tblIOT1 
SET Part#= Trim(Mid(ItemDesc, InStr(ItemDesc, '-') +1)) 
where ItemDesc like "*-*"

请注意,我使用的是明星字符,而其他受访者使用百分比字符,或者看起来对指定的MS Access有效here

答案 1 :(得分:0)

在Access SQL中,您可以使用InStr()在字段中查找“ - ”的位置。然后你可以使用Mid()返回在该位置后面开始一个字符的子字符串。

请注意,由于名称中包含Part#字符,因此必须在SQL语句中括起#

UPDATE tblIOT1
SET [Part#] =
    Mid(ItemDesc, InStr(1, ItemDesc, "-") + 1)

如果ItemDesc可能为空或包含不带“ - ”的字符串,请添加WHERE子句以忽略UPDATE中的那些行。< / p>

WHERE ItemDesc ALike '%-%'