SQL拆分字符串并追加

时间:2015-12-04 12:14:25

标签: sql sql-server

我是SQL的新手,只知道基础知识。但我所追求的是一种将单元格值拆分为2个值并将第一个拆分值添加到结束的方法。

举个例子,单元格值为FB Equiv - All White

我希望该值导致All White - FB Equiv

我写了这个:

UPDATE [TABLENMAME]  
SET Colour = Colour + ' - FB Equiv'
WHERE Colour like 'FB Equiv%'

UPDATE [TABLENMAME]
SET Colour = LTRIM(SUBSTRING(Colour, 11, LEN(Colour)))
WHERE Colour LIKE 'FB Equiv - %'
GO

这样可以正常工作,但一次只能在一个表上工作。 有没有办法循环遍历所有表并运行它?

3 个答案:

答案 0 :(得分:3)

  

有没有办法循环遍历所有表并运行它?

是的,通过编写动态SQL查询INFORMATION_SCHEMA.TABLES来设置UPDATE语句的表,然后从内存中执行生成的SQL。

但请不要那样做。这是一个非常糟糕,冒险的想法,有着可怕的潜在问题。这也是一个标志,可能是表格设计不正常。我已经阅读了规范化并首先修复了这个设计。

答案 1 :(得分:0)

您可以通过执行以下操作来交换单个表中的值:

UPDATE [TABLENMAME]  
    SET Colour = (SUBSTRING(Colour, CHARINDEX(' - ', Colour) + 3, LEN(Colour)) +
                  ' - ' +
                  LEFT(Colour, CHARINDEX(' - ', Colour))
                 )
    WHERE Colour like '% - %';

这是使用SQL Server语法,它似乎是您正在使用的数据库。

答案 2 :(得分:0)

update [TABLENMAME]  
SET Colour = SUBSTRING(Colour, 1, CASE CHARINDEX('-', Colour) 
WHEN 0 
 THEN       
  LEN(Colour) ELSE CHARINDEX('-', Colour)-1 END) + '-' +
 SUBSTRING(Colour, CASE  CHARINDEX('-', Colour) 
 WHEN 0 
 THEN LEN(Colour)+1 
 ELSE CHARINDEX('-', Colour)+1 END, 1000)

颜色如何' FB Equiv%'