将数据移动到同一个表中的另一列(MS SQL)

时间:2016-06-13 15:15:26

标签: sql-server

如何将句子移到另一列?

我想将ET **从fælge移到ET列。 目前我得到的结果如下:

   Fælge                                 ET
   6 x 15 ET45      
   7 x 16 ET38
   6x14 ET35|8.5x20 ET36|10x20 ET30

但我想要如下结果:

  Fælge                               ET  
  6x15                                45
  7x16                                38
  6x14|8.5x20|10x20                   35|36|30

我一直在使用此查询将字符替换为另一个但我不知道如何将句子移动到另一个带有通配符的列

我在下面使用这个脚本来更改fælge列中的一些字母:

 use [OminiData]
    UPDATE [dbo].[test]
    SET  [Fælge] = REPLACE([Fælge],'*','x')
    WHERE [Fælge] LIKE '%*%'

这是我的表:
enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

您可以通过字符串操作来完成此操作。

declare @faelge varchar(25)

set @faelge = '7 x 16 ET38'

select replace(left(@faelge, patindex('%ET%', @faelge) - 1), ' ', '') as 'Faelge', 
right(@faelge, len(@faelge) - patindex('%ET%', @faelge) - 1) as 'ET'

我使用单个变量作为示例,您可以使用表中的列。

答案 1 :(得分:0)

请尝试以下。
它将在“ET”一词之后和之前分解两列。

    SELECT LEFT(Fælge,LEN(Fælge)-CHARINDEX('ET',Fælge)) AS Fælge
,RIGHT(Fælge,LEN(Fælge)-CHARINDEX('ET',Fælge)) AS ET from [dbo].[Test]

答案 2 :(得分:0)

我想出了一种方法,只需使用

即可
UPDATE [dbo].[test]
SET  [Fælge] = REPLACE([Fælge],'6x15','')

然后将其导出并导入到正确的列但是我需要一段时间来获取我想要的数据,但它仍然比我应该手动编辑64k记录更快