sql - 通过使用 T-SQL 解析另一列来更新列

标签 sql sql-server-2008 tsql

我的数据库中有这个表和数据:

tblPhotos

ID | Title | Description
------------------------------
1 | NULL | Some data - Title 123 - Subtitle - Photographer: John Doe
2 | NULL | Some data - Photographer: Jane Doe
3 | NULL | Some data - Title 345 - Photographer: John Doe Jr
Description中的数据列有两种格式:
{GARBAGE DATA} - {TITLE DATA} - Photographer: ..., or
{GARBAGE DATA} - Photographer: ...

基本上,我有数千行,其中 Title列是空的。我需要以某种方式将其从 Description 中拉出柱子。
Title存在于 Description 的第一个破折号和最后一个破折号之间柱子。数据应如下所示:

tblPhotos
ID | Title                | Description
-------------------------------------------------------------------------------------
 1 | Title 123 - Subtitle | Some data - Title 123 - Subtitle - Photographer: John Doe
 2 | NULL                 | Some data - Photographer: Jane Doe
 3 | Title 345            | Some data - Title 345 - Photographer: John Doe Jr

如何制作一个脚本来解析一列,并用解析的数据更新另一列?

最佳答案

尝试这样的事情:

update tblPhotos
    set title = substring(description, charindex('-', description)+1,
                          (charindex('-', description, charindex('-', description) + 1) -
                           charindex('-', description)
                          )-1
                         )
    where title is null and description like '%-%-%'
您可能需要修剪标题中的空格。

关于sql - 通过使用 T-SQL 解析另一列来更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528651/

相关文章:

mysql - 在一个查询中从单个 mysql 表中选择行和总和

Java Hibernate 注解 @JoinTable 关系

SQL:计算不同行中一列日期之间的天数

SQL Server 合并 - 将匹配的记录获取到另一个临时表

mysql - 一条sql语句联合父子表获取两张表的记录

sql-server - 如何复制 SCH_S、SCH_M 死锁

asp.net - 存储过程查询中的 SQL 注入(inject)

android - 如何使用 sqlite 获取一个月的数据?如果没有特定日期的数据,那么我想要零代替那个

sql - Oracle 合并列给出错误

sql-server - SQL Server 2005 FREE TEXT() 性能问题