如何根据字符串长度在SQL Server中拆分字符串

时间:2014-05-07 03:26:38

标签: sql sql-server-2008 split substring charindex

我想将旧数据复制到新数据库。我的旧数据库中有一个地址列,数据类型为ntext,但在新数据库中,我必须使用3列来放置地址(address1,address2,address3,数据类型为nvarchar(60))

如何将OLD DB中的字符串拆分为新数据库?

例如: 从旧db查询:

`select address from client`

result : 

Jl. Taman Crystal 2 Blok TC 2 No.79 RT.001/018, Cluster Crystal Residence, Summarecon Serpong, Pakulonan Barat - Kelapa Dua

1 个答案:

答案 0 :(得分:1)

这实际上取决于您需要处理多少数据。

对于小套装(比如说不到10K左右),我就这样做:

  1. 创建一个临时表,其中包含旧地址和3个新地址的密钥空间。
  2. 将地址复制到临时表中。
  3. 写一个"提取"查询不同的部分并逐个运行它们。例如,要获取address1列,您可以使用left函数到位置

    INSERT INTO STAGE (address1)
    SELECT LEFT(address,location(address,','))
    
  4. 完成上述每个临时查询后,您可以对结果运行一些查询,并确保您对此感到满意。如果您在修改查询时遇到问题并再次运行它。

    一旦您对STAGE感到满意,请将其复制到您的决赛桌。

    对于较大的集合,我会编写一个具有良好错误检查,报告和异常表等的程序。真正的解析器和ETL。对于您可以手工查看和使用的少量数据而言,这是不值得的。